| haskell-src-exts-1.9.0: Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer | Source code | Contents | Index
Language.Haskell.Exts.Annotated.Build |
Portability | portable
Stability | experimental
Maintainer | Niklas Broberg, d00nibro@chalmers.se
Contents
Syntax building functions More advanced building
Description
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.
Synopsis
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 l | Source
An identifier with the given string as its name. The string should be a valid Haskell identifier.
sym :: l -> String -> Name l | Source
A symbol identifier. The string should be a valid Haskell symbol identifier.
var :: l -> Name l -> Exp l | Source
A local variable as expression.
op :: l -> Name l -> QOp l | Source
Use the given identifier as an operator.
qvar :: l -> ModuleName l -> Name l -> Exp l | Source
A qualified variable as expression.
pvar :: l -> Name l -> Pat l | Source
A pattern variable.
app :: l -> Exp l -> Exp l -> Exp l | Source
Application of expressions by juxtaposition.
infixApp :: l -> Exp l -> QOp l -> Exp l -> Exp l | Source
Apply an operator infix.
appFun :: [l] -> Exp l -> [Exp l] -> Exp l | Source
Apply a function to a list of arguments.
pApp :: l -> Name l -> [Pat l] -> Pat l | Source
A constructor pattern, with argument patterns.
tuple :: l -> [Exp l] -> Exp l | Source
A tuple expression.
pTuple :: l -> [Pat l] -> Pat l | Source
A tuple pattern.
varTuple :: l -> [Name l] -> Exp l | Source
A tuple expression consisting of variables only.
pvarTuple :: l -> [Name l] -> Pat l | Source
A tuple pattern consisting of variables only.
function :: l -> String -> Exp l | Source
A function with a given name.
strE :: l -> String -> Exp l | Source
A literal string expression.
charE :: l -> Char -> Exp l | Source
A literal character expression.
intE :: l -> Integer -> Exp l | Source
A literal integer expression.
strP :: l -> String -> Pat l | Source
A literal string pattern.
charP :: l -> Char -> Pat l | Source
A literal character pattern.
intP :: l -> Integer -> Pat l | Source
A literal integer pattern.
doE :: l -> [Stmt l] -> Exp l | Source
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 l | Source
Lambda abstraction, given a list of argument patterns and an expression body.
letE :: l -> [Decl l] -> Exp l -> Exp l | Source
A `let` ... `in` block.
caseE :: l -> Exp l -> [Alt l] -> Exp l | Source
A `case` expression.
alt :: l -> Pat l -> Exp l -> Alt l | Source
An unguarded alternative in a `case` expression.
altGW :: l -> Pat l -> [Stmt l] -> Exp l -> Binds l -> Alt l | Source
An alternative with a single guard in a `case` expression.
listE :: l -> [Exp l] -> Exp l | Source
A list expression.
eList :: l -> Exp l | Source
The empty list expression.
peList :: l -> Pat l | Source
The empty list pattern.
paren :: l -> Exp l -> Exp l | Source
Put parentheses around an expression.
pParen :: l -> Pat l -> Pat l | Source
Put parentheses around a pattern.
qualStmt :: l -> Exp l -> Stmt l | Source
A qualifier expression statement.
genStmt :: l -> Pat l -> Exp l -> Stmt l | Source
A generator statement: pat `<-` exp
letStmt :: l -> [Decl l] -> Stmt l | Source
A `let` binding group as a statement.
binds :: l -> [Decl l] -> Binds l | Source
Hoist a set of declarations to a binding group.
noBinds :: l -> Binds l | Source
An empty binding group.
wildcard :: l -> Pat l | Source
The wildcard pattern: `_`
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 l | Source
A function with a single clause
simpleFun :: l -> Name l -> Name l -> Exp l -> Decl l | Source
A function with a single clause, a single argument, no guards and no where declarations
patBind :: l -> Pat l -> Exp l -> Decl l | Source
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 l | Source
A pattern bind where the pattern is a variable, and where there are no guards, but with a 'where' clause.
nameBind :: l -> Name l -> Exp l -> Decl l | Source
Bind an identifier to an expression.
metaFunction :: l -> String -> [Exp l] -> Exp l | Source
Apply function of a given name to a list of arguments.
metaConPat :: l -> String -> [Pat l] -> Pat l | Source
Apply a constructor of a given name to a list of pattern arguments, forming a constructor pattern.
Produced by Haddock version 2.4.2