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