Copyright | (c) Sirui Lu 2024 |
---|---|
License | BSD-3-Clause (see the LICENSE file) |
Maintainer | siruilu@cs.washington.edu |
Stability | Experimental |
Portability | GHC only |
Safe Haskell | None |
Language | Haskell2010 |
Grisette.Internal.Unified.Util
Description
Synopsis
- class DecideEvalMode (mode :: EvalModeTag) where
- withMode :: forall (mode :: EvalModeTag) r. DecideEvalMode mode => (mode ~ 'C => r) -> (mode ~ 'S => r) -> r
- class (DecideEvalMode c, DecideEvalMode s) => EvalModeConvertible (c :: EvalModeTag) (s :: EvalModeTag) where
Documentation
class DecideEvalMode (mode :: EvalModeTag) where Source #
A class that provides the mode tag at runtime.
Methods
Instances
DecideEvalMode 'C Source # | |
Defined in Grisette.Internal.Unified.Util Methods | |
DecideEvalMode 'S Source # | |
Defined in Grisette.Internal.Unified.Util Methods |
withMode :: forall (mode :: EvalModeTag) r. DecideEvalMode mode => (mode ~ 'C => r) -> (mode ~ 'S => r) -> r Source #
Case analysis on the mode.
class (DecideEvalMode c, DecideEvalMode s) => EvalModeConvertible (c :: EvalModeTag) (s :: EvalModeTag) where Source #
A class saying that we can convert a value with one mode to another mode.
Allowed conversions:
Conversion from left to right uses ToSym
class, and conversion
from right to left uses ToCon
class.
Methods
withModeConvertible :: (c ~ 'C => r) -> (s ~ 'S => r) -> r Source #
withModeConvertible' :: ((c ~ 'C, s ~ 'C) => r) -> ((c ~ 'C, s ~ 'S) => r) -> ((c ~ 'S, s ~ 'S) => r) -> r Source #
Instances
DecideEvalMode s => EvalModeConvertible 'C s Source # | |
DecideEvalMode c => EvalModeConvertible c 'S Source # | |
DecideEvalMode c => EvalModeConvertible c c Source # | |