Safe Haskell | None |
---|
Fold over expressions that collect up assertions about the expressions.
- newtype FolderM a b = FolderM {}
- insert :: a -> FolderM a ()
- inserts :: DList a -> FolderM a ()
- insertList :: [a] -> FolderM a ()
- resetState :: FolderM a ()
- runFolderM :: FolderM a b -> (b, DList a)
- type Stmts = DList Stmt
- type FolderStmt a = FolderM Stmt a
- type ExpFold = Type -> Expr -> [Expr]
- insertAssert :: Expr -> FolderStmt ()
- insertAsserts :: [Expr] -> FolderStmt ()
- runEmptyState :: ExpFold -> [Stmt] -> [Stmt]
- procFold :: ExpFold -> Proc -> Proc
- stmtFold :: ExpFold -> Stmt -> FolderStmt ()
- type Exprs = DList Expr
- type FolderExpr a = FolderM Expr a
- expFoldDefault :: ExpFold -> Type -> Expr -> [Expr]
- expFoldDefault' :: ExpFold -> Type -> Expr -> FolderExpr ()
- expFoldOps :: ExpFold -> Type -> (ExpOp, [Expr]) -> FolderExpr ()
- (<++>) :: Monoid a => a -> a -> a
- withEnv :: Expr -> FolderExpr ()
- (==>) :: Expr -> Expr -> Expr
- neg :: Expr -> Expr
Documentation
A monad that holds our transformed program.
insertList :: [a] -> FolderM a ()Source
resetState :: FolderM a ()Source
runFolderM :: FolderM a b -> (b, DList a)Source
type FolderStmt a = FolderM Stmt aSource
insertAssert :: Expr -> FolderStmt ()Source
insertAsserts :: [Expr] -> FolderStmt ()Source
runEmptyState :: ExpFold -> [Stmt] -> [Stmt]Source
stmtFold :: ExpFold -> Stmt -> FolderStmt ()Source
type FolderExpr a = FolderM Expr aSource
expFoldDefault :: ExpFold -> Type -> Expr -> [Expr]Source
Default expression folder that performs the recursion for an asserter.
expFoldDefault' :: ExpFold -> Type -> Expr -> FolderExpr ()Source
expFoldOps :: ExpFold -> Type -> (ExpOp, [Expr]) -> FolderExpr ()Source
withEnv :: Expr -> FolderExpr ()Source