| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Language.Embedded.Traversal
Description
Methods for traversing programs
Documentation
class DryInterp instr where Source #
Dry (effect-less) interpretation of an instruction. This class is like
Interp without the monad parameter, so it cannot have different instances
for different monads.
Minimal complete definition
Methods
dryInterp :: MonadSupply m => instr '(m, fs) a -> m a Source #
Dry interpretation of an instruction. This function is like interp
except that it interprets in any monad that can supply fresh variables.
Instances
| (DryInterp k i1, DryInterp k i2) => DryInterp k ((:+:) * (* -> *, k) i1 i2) Source # | |
| DryInterp (* -> *, (* -> Constraint, *)) C_CMD Source # | |
| DryInterp (* -> *, (* -> Constraint, *)) ControlCMD Source # | |
| DryInterp (* -> *, (* -> Constraint, *)) (FileCMD (* -> *)) Source # | |
| DryInterp (* -> *, (* -> Constraint, *)) (ArrCMD (* -> *)) Source # | |
| DryInterp (* -> *, (* -> Constraint, *)) (RefCMD (* -> *)) Source # | |
| DryInterp (* -> *, (* -> Constraint, *)) (ChanCMD (* -> *)) Source # | |
| DryInterp (* -> *, (k, *)) (ThreadCMD k) Source # | |
| DryInterp (k1, (k, *)) (PtrCMD (* -> *) k1 k) Source # | |
Arguments
| :: (DryInterp instr, HFunctor instr, MonadSupply m) | |
| => (forall a. instr '(m, fs) a -> a -> m ()) | Function for observing instructions |
| -> Program instr fs a | |
| -> m a |
Interpretation of a program as a combination of dry interpretation and effectful observation