Portability | portable |
---|---|
Stability | experimental |
Maintainer | Niklas Broberg, d00nibro@chalmers.se |
This module contains combinators to use when building Haskell source trees programmatically, as opposed to parsing them from a string. The contents here are quite experimental and will likely receive a lot of attention when the rest has stabilised.
- name :: l -> String -> Name l
- sym :: l -> String -> Name l
- var :: l -> Name l -> Exp l
- op :: l -> Name l -> QOp l
- qvar :: l -> ModuleName l -> Name l -> Exp l
- pvar :: l -> Name l -> Pat l
- app :: l -> Exp l -> Exp l -> Exp l
- infixApp :: l -> Exp l -> QOp l -> Exp l -> Exp l
- appFun :: [l] -> Exp l -> [Exp l] -> Exp l
- pApp :: l -> Name l -> [Pat l] -> Pat l
- tuple :: l -> [Exp l] -> Exp l
- pTuple :: l -> [Pat l] -> Pat l
- varTuple :: l -> [Name l] -> Exp l
- pvarTuple :: l -> [Name l] -> Pat l
- function :: l -> String -> Exp l
- strE :: l -> String -> Exp l
- charE :: l -> Char -> Exp l
- intE :: l -> Integer -> Exp l
- strP :: l -> String -> Pat l
- charP :: l -> Char -> Pat l
- intP :: l -> Integer -> Pat l
- doE :: l -> [Stmt l] -> Exp l
- lamE :: l -> [Pat l] -> Exp l -> Exp l
- letE :: l -> [Decl l] -> Exp l -> Exp l
- caseE :: l -> Exp l -> [Alt l] -> Exp l
- alt :: l -> Pat l -> Exp l -> Alt l
- altGW :: l -> Pat l -> [Stmt l] -> Exp l -> Binds l -> Alt l
- listE :: l -> [Exp l] -> Exp l
- eList :: l -> Exp l
- peList :: l -> Pat l
- paren :: l -> Exp l -> Exp l
- pParen :: l -> Pat l -> Pat l
- qualStmt :: l -> Exp l -> Stmt l
- genStmt :: l -> Pat l -> Exp l -> Stmt l
- letStmt :: l -> [Decl l] -> Stmt l
- binds :: l -> [Decl l] -> Binds l
- noBinds :: l -> Binds l
- wildcard :: l -> Pat l
- genNames :: l -> String -> Int -> [Name l]
- sfun :: l -> Name l -> [Name l] -> Rhs l -> Maybe (Binds l) -> Decl l
- simpleFun :: l -> Name l -> Name l -> Exp l -> Decl l
- patBind :: l -> Pat l -> Exp l -> Decl l
- patBindWhere :: l -> Pat l -> Exp l -> [Decl l] -> Decl l
- nameBind :: l -> Name l -> Exp l -> Decl l
- metaFunction :: l -> String -> [Exp l] -> Exp l
- metaConPat :: l -> String -> [Pat l] -> Pat l
Syntax building functions
name :: l -> String -> Name lSource
An identifier with the given string as its name. The string should be a valid Haskell identifier.
sym :: l -> String -> Name lSource
A symbol identifier. The string should be a valid Haskell symbol identifier.
qvar :: l -> ModuleName l -> Name l -> Exp lSource
A qualified variable as expression.
doE :: l -> [Stmt l] -> Exp lSource
A do block formed by the given statements.
The last statement in the list should be
a Qualifier
expression.
lamE :: l -> [Pat l] -> Exp l -> Exp lSource
Lambda abstraction, given a list of argument patterns and an expression body.
altGW :: l -> Pat l -> [Stmt l] -> Exp l -> Binds l -> Alt lSource
An alternative with a single guard in a case
expression.
genNames :: l -> String -> Int -> [Name l]Source
Generate k names by appending numbers 1 through k to a given string.
More advanced building
sfun :: l -> Name l -> [Name l] -> Rhs l -> Maybe (Binds l) -> Decl lSource
A function with a single clause
simpleFun :: l -> Name l -> Name l -> Exp l -> Decl lSource
A function with a single clause, a single argument, no guards and no where declarations
patBind :: l -> Pat l -> Exp l -> Decl lSource
A pattern bind where the pattern is a variable, and where there are no guards and no 'where' clause.
patBindWhere :: l -> Pat l -> Exp l -> [Decl l] -> Decl lSource
A pattern bind where the pattern is a variable, and where there are no guards, but with a 'where' clause.
metaFunction :: l -> String -> [Exp l] -> Exp lSource
Apply function of a given name to a list of arguments.
metaConPat :: l -> String -> [Pat l] -> Pat lSource
Apply a constructor of a given name to a list of pattern arguments, forming a constructor pattern.