ivory-0.1.0.3: Safe embedded C programming.

Safe HaskellNone
LanguageHaskell2010

Ivory.Language.Monad

Contents

Synopsis

Ivory Monad

data Ivory eff a Source

Instances

Monad (Ivory eff) Source 
Functor (Ivory eff) Source 
Applicative (Ivory eff) Source 
FreshName (Ivory eff) Source 
IvoryType r => IvoryCall_ ((:->) * ([] *) r) eff (Ivory eff ()) Source 
IvoryVar r => IvoryCall ((:->) * ([] *) r) eff (Ivory eff r) Source 

retProxy :: Ivory eff a -> Proxy r Source

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

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 a Source

noReturn :: Ivory (ClearReturn eff) a -> Ivory eff a Source

noAlloc :: (innerEff ~ ClearAlloc outerEff) => Ivory innerEff a -> Ivory outerEff a Source

Code Blocks

emits :: CodeBlock -> Ivory eff () Source

Add some statements to the collected block.

XXX do not export

emit :: Stmt -> Ivory eff () Source

Emit a single statement.

XXX do not export

Name Generation

freshVar :: String -> Ivory eff Var Source

Generate a fresh variable name.

XXX do not export

result :: forall eff a. IvoryExpr a => a -> Ivory eff Var Source

Name the result of an expression.

XXX do not export

assign :: forall eff a. IvoryExpr a => a -> Ivory eff a Source

Sub-expression naming.

Source Locations

withLocation :: SrcLoc -> Ivory eff a -> Ivory eff a Source