Safe Haskell | None |
---|
- data Ivory eff a
- retProxy :: Ivory eff a -> Proxy r
- runIvory :: Ivory (ProcEffects s r) a -> (a, CodeBlock)
- primRunIvory :: Ivory (ProcEffects s r) a -> (a, CodeBlock)
- collect :: Ivory eff' a -> Ivory eff (a, CodeBlock)
- noBreak :: Ivory (ClearBreak eff) a -> Ivory eff a
- noReturn :: Ivory (ClearReturn eff) a -> Ivory eff a
- noAlloc :: innerEff ~ ClearAlloc outerEff => Ivory innerEff a -> Ivory outerEff a
- data CodeBlock = CodeBlock {
- blockStmts :: Block
- blockRequires :: [Require]
- blockEnsures :: [Ensure]
- emits :: CodeBlock -> Ivory eff ()
- emit :: Stmt -> Ivory eff ()
- freshVar :: String -> Ivory eff Var
- result :: forall eff a. IvoryExpr a => a -> Ivory eff Var
- assign :: forall eff a. IvoryExpr a => a -> Ivory eff a
Ivory Monad
retProxy :: Ivory eff a -> Proxy rSource
Get a Proxy
to the return type of an Ivory block.
XXX do not export
Running Functions
runIvory :: Ivory (ProcEffects s r) a -> (a, CodeBlock)Source
Run an Ivory block computation that could require any effect.
XXX do not export
primRunIvory :: Ivory (ProcEffects s r) a -> (a, CodeBlock)Source
collect :: Ivory eff' a -> Ivory eff (a, CodeBlock)Source
Collect the CodeBlock
for an Ivory computation.
XXX do not export
Effects
noBreak :: Ivory (ClearBreak eff) a -> Ivory eff aSource
noReturn :: Ivory (ClearReturn eff) a -> Ivory eff aSource
noAlloc :: innerEff ~ ClearAlloc outerEff => Ivory innerEff a -> Ivory outerEff aSource
Code Blocks
CodeBlock | |
|
emits :: CodeBlock -> Ivory eff ()Source
Add some statements to the collected block.
XXX do not export