ivory-0.1.0.9: Safe embedded C programming.

Safe HaskellNone
LanguageHaskell2010

Ivory.Language.Monad

Contents

Synopsis

Ivory Monad

data Ivory (eff :: Effects) a Source #

Instances
Monad (Ivory eff) Source # 
Instance details

Defined in Ivory.Language.Monad

Methods

(>>=) :: Ivory eff a -> (a -> Ivory eff b) -> Ivory eff b #

(>>) :: Ivory eff a -> Ivory eff b -> Ivory eff b #

return :: a -> Ivory eff a #

fail :: String -> Ivory eff a #

Functor (Ivory eff) Source # 
Instance details

Defined in Ivory.Language.Monad

Methods

fmap :: (a -> b) -> Ivory eff a -> Ivory eff b #

(<$) :: a -> Ivory eff b -> Ivory eff a #

Applicative (Ivory eff) Source # 
Instance details

Defined in Ivory.Language.Monad

Methods

pure :: a -> Ivory eff a #

(<*>) :: Ivory eff (a -> b) -> Ivory eff a -> Ivory eff b #

liftA2 :: (a -> b -> c) -> Ivory eff a -> Ivory eff b -> Ivory eff c #

(*>) :: Ivory eff a -> Ivory eff b -> Ivory eff b #

(<*) :: Ivory eff a -> Ivory eff b -> Ivory eff a #

FreshName (Ivory eff) Source # 
Instance details

Defined in Ivory.Language.Init

Methods

freshName :: String -> Ivory eff Var Source #

IvoryType r => IvoryCall_ (([] :: [Type]) :-> r) eff (Ivory eff ()) Source # 
Instance details

Defined in Ivory.Language.Proc

Methods

callAux_ :: Name -> Proxy ([] :-> r) -> [Typed Expr] -> Ivory eff () Source #

IvoryVar r => IvoryCall (([] :: [Type]) :-> r) eff (Ivory eff r) Source # 
Instance details

Defined in Ivory.Language.Proc

Methods

callAux :: Name -> Proxy ([] :-> r) -> [Typed Expr] -> 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

data SrcLoc Source #

A range in the program source.

Instances
Eq SrcLoc Source # 
Instance details

Defined in Ivory.Language.Syntax.Concrete.Location

Methods

(==) :: SrcLoc -> SrcLoc -> Bool #

(/=) :: SrcLoc -> SrcLoc -> Bool #

Ord SrcLoc Source # 
Instance details

Defined in Ivory.Language.Syntax.Concrete.Location

Read SrcLoc Source # 
Instance details

Defined in Ivory.Language.Syntax.Concrete.Location

Show SrcLoc Source # 
Instance details

Defined in Ivory.Language.Syntax.Concrete.Location

Semigroup SrcLoc Source # 
Instance details

Defined in Ivory.Language.Syntax.Concrete.Location

Monoid SrcLoc Source # 
Instance details

Defined in Ivory.Language.Syntax.Concrete.Location

Lift SrcLoc Source # 
Instance details

Defined in Ivory.Language.Syntax.AST

Methods

lift :: SrcLoc -> Q Exp #

Pretty SrcLoc Source # 
Instance details

Defined in Ivory.Language.Syntax.Concrete.Location

Methods

pretty :: SrcLoc -> Doc Source #

HasLocation SrcLoc Source # 
Instance details

Defined in Ivory.Language.Syntax.Concrete.Location

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