Safe Haskell | Safe-Infered |
---|
- data HermitM a
- runHM :: HermitMEnv -> DefStash -> (DefStash -> a -> CoreM b) -> (String -> CoreM b) -> HermitM a -> CoreM b
- liftCoreM :: CoreM a -> HermitM a
- newVarH :: String -> Type -> HermitM Id
- newTypeVarH :: String -> Kind -> HermitM TyVar
- cloneIdH :: (String -> String) -> Id -> HermitM Id
- type Label = String
- type DefStash = Map Label CoreDef
- saveDef :: Label -> CoreDef -> HermitM ()
- lookupDef :: Label -> HermitM CoreDef
- getStash :: HermitM DefStash
- newtype HermitMEnv = HermitMEnv {
- hs_debugChan :: DebugMessage -> HermitM ()
- data DebugMessage where
- DebugTick :: String -> DebugMessage
- DebugCore :: String -> Context -> Core -> DebugMessage
- mkHermitMEnv :: (DebugMessage -> HermitM ()) -> HermitMEnv
- sendDebugMessage :: DebugMessage -> HermitM ()
The HERMIT Monad
The HERMIT monad is kept abstract.
runHM :: HermitMEnv -> DefStash -> (DefStash -> a -> CoreM b) -> (String -> CoreM b) -> HermitM a -> CoreM bSource
Eliminator for HermitM
.
newVarH :: String -> Type -> HermitM IdSource
Make a unique identifier for a specified type based on a provided name.
newTypeVarH :: String -> Kind -> HermitM TyVarSource
Make a unique type variable for a specified kind based on a provided name.
Saving Definitions
newtype HermitMEnv Source
A way of sending messages to top level
data DebugMessage whereSource
A message packet.
DebugTick :: String -> DebugMessage | |
DebugCore :: String -> Context -> Core -> DebugMessage |
mkHermitMEnv :: (DebugMessage -> HermitM ()) -> HermitMEnvSource