grisette-0.11.0.0: Symbolic evaluation as a library
Copyright(c) Sirui Lu 2024
LicenseBSD-3-Clause (see the LICENSE file)
Maintainersiruilu@cs.washington.edu
StabilityExperimental
PortabilityGHC only
Safe HaskellNone
LanguageHaskell2010

Grisette.Internal.Unified.Util

Description

 
Synopsis

Documentation

class DecideEvalMode (mode :: EvalModeTag) where Source #

A class that provides the mode tag at runtime.

Instances

Instances details
DecideEvalMode 'C Source # 
Instance details

Defined in Grisette.Internal.Unified.Util

DecideEvalMode 'S Source # 
Instance details

Defined in Grisette.Internal.Unified.Util

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

Instances details
DecideEvalMode s => EvalModeConvertible 'C s Source # 
Instance details

Defined in Grisette.Internal.Unified.Util

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 #

DecideEvalMode c => EvalModeConvertible c 'S Source # 
Instance details

Defined in Grisette.Internal.Unified.Util

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 #

DecideEvalMode c => EvalModeConvertible c c Source # 
Instance details

Defined in Grisette.Internal.Unified.Util

Methods

withModeConvertible :: (c ~ 'C => r) -> (c ~ 'S => r) -> r Source #

withModeConvertible' :: ((c ~ 'C, c ~ 'C) => r) -> ((c ~ 'C, c ~ 'S) => r) -> ((c ~ 'S, c ~ 'S) => r) -> r Source #