 | derive-0.1: A program and library to derive instances for data types | Contents | Index |
|
| Language.Haskell.TH.Helper |
|
|
|
|
| Description |
| These small short-named functions are intended to make the
construction of abstranct syntax trees less tedious.
|
|
| Synopsis |
|
|
|
|
| Special folds for the guessing
|
|
| applyWith :: Exp -> [Exp] -> Exp |
|
| foldl1With :: Exp -> [Exp] -> Exp |
|
| foldr1With :: Exp -> [Exp] -> Exp |
|
| Syntax elements
|
|
| sclause :: [Pat] -> Exp -> Clause |
| A simple clause, without where or guards.
|
|
| defclause :: Int -> Exp -> Clause |
| A default clause with N arguments.
|
|
| sval :: Pat -> Exp -> Dec |
| A simple Val clause
|
|
| case' :: Exp -> [(Pat, Exp)] -> Exp |
|
| (->:) :: String -> Exp -> Exp |
|
| instance_none :: String -> DataDef -> [Dec] -> Dec |
| We provide 3 standard instance constructors
instance_default requires C for each free type variable
instance_none requires no context
instance_context requires a given context
|
|
| instance_default :: String -> DataDef -> [Dec] -> Dec |
|
| instance_context :: [String] -> String -> DataDef -> [Dec] -> Dec |
|
| simple_instance :: String -> DataDef -> [Dec] -> [Dec] |
| Build an instance of a class for a data type, using the heuristic
that the type is itself required on all type arguments.
|
|
| generic_instance :: String -> DataDef -> [Type] -> [Dec] -> [Dec] |
| Build an instance of a class for a data type, using the class at the given types
|
|
| funN :: String -> [Clause] -> Dec |
| Build a fundecl with a string name
|
|
| Pattern vs Value abstraction
|
|
| class Valcon a where |
| The class used to overload lifting operations. To reduce code
duplication, we overload the wrapped constructors (and everything
else, but that's irrelevant) to work in patterns, expressions, and
types.
| | | Methods | | lK :: String -> [a] -> a | | Build an application node, with a name for a head and a
provided list of arguments.
| | | vr :: String -> a | | Reference a named variable.
| | | raw_lit :: Lit -> a | | Lift a TH Lit
| | | tup :: [a] -> a | | Tupling
| | | lst :: [a] -> a | | Listing
|
| | Instances | |
|
|
| app :: Exp -> [Exp] -> Exp |
| Build an application node without a given head
|
|
| class LitC a where |
| This class is used to overload literal construction based on the
type of the literal.
| | | Methods | | | Instances | |
|
|
| Constructor abstraction
|
|
| dataVars :: DataDef -> [Type] |
|
| vars :: Valcon a => Char -> Int -> [a] |
| Common pattern: list of a familiy of variables
|
|
| vrn :: Valcon a => Char -> Int -> a |
| Variable based on a letter + number
|
|
| ctv :: Valcon a => CtorDef -> Char -> [a] |
| Make a list of variables, one for each argument to a constructor
|
|
| ctp :: Valcon a => CtorDef -> Char -> a |
| Make a simple pattern to bind a constructor
|
|
| ctc :: Valcon a => CtorDef -> a |
| Reference the constructor itself
|
|
| Lift a constructor over a fixed number of arguments.
|
|
| l0 :: Valcon a => String -> a |
|
| l1 :: Valcon a => String -> a -> a |
|
| l2 :: Valcon a => String -> a -> a -> a |
|
| Pre-lifted versions of common operations
|
|
| true :: Valcon a => a |
|
| false :: Valcon a => a |
|
| nil :: Valcon a => a |
|
| hNil' :: Type |
|
| hZero' :: Type |
|
| cons :: Valcon a => a -> a -> a |
|
| box :: Valcon a => a -> a |
|
| return' :: Exp -> Exp |
|
| const' :: Exp -> Exp |
|
| hSucc' :: Type -> Type |
|
| (==:) :: Exp -> Exp -> Exp |
|
| (&&:) :: Exp -> Exp -> Exp |
|
| (++:) :: Exp -> Exp -> Exp |
|
| (>>=:) :: Exp -> Exp -> Exp |
|
| (>>:) :: Exp -> Exp -> Exp |
|
| (.:) :: Exp -> Exp -> Exp |
|
| ap' :: Exp -> Exp -> Exp |
|
| (>:) :: Exp -> Exp -> Exp |
|
| hCons' :: Type -> Type -> Type |
|
| (&&::) :: [Exp] -> Exp |
| Build a chain of expressions, with an appropriate terminal
sequence__ does not require a unit at the end (all others are optimised automatically)
|
|
| (++::) :: [Exp] -> Exp |
|
| (>>::) :: [Exp] -> Exp |
|
| sequence__ :: [Exp] -> Exp |
|
| (.::) :: [Exp] -> Exp |
|
| liftmk :: Exp -> [Exp] -> Exp |
| K-way liftM
|
|
| Produced by Haddock version 0.8 |