-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Lambda Calculi Abstract Syntax Trees -- -- AST's for various Lambda Calculi. Adding more as I need them. @package lambda-ast @version 0.0.12 module Language.Lambda.SimplyTyped.Let.Syntax data Type a Base :: a -> Type a Arrow :: (Type a) -> (Type a) -> Type a data Expr s a c Var :: s -> Expr s a c App :: (Expr s a c) -> (Expr s a c) -> Expr s a c Lam :: s -> (Type a) -> (Expr s a c) -> Expr s a c Constant :: c -> Expr s a c Let :: s -> (Expr s a c) -> (Expr s a c) -> Expr s a c instance Typeable1 Type instance Typeable3 Expr instance Show a => Show (Type a) instance Eq a => Eq (Type a) instance Data a => Data (Type a) instance (Show s, Show a, Show c) => Show (Expr s a c) instance (Eq s, Eq a, Eq c) => Eq (Expr s a c) instance (Data s, Data a, Data c) => Data (Expr s a c) -- | An Untyped Lambda Calculus AST module Language.Lambda.Untyped.Syntax -- | A polymorphic version of the AST to allow different symbol types data GExpr a Var :: a -> GExpr a App :: (GExpr a) -> (GExpr a) -> GExpr a Lam :: a -> (GExpr a) -> GExpr a -- | A common symbol type choice type Sym = String -- | A common AST type Expr = GExpr Sym instance Typeable1 GExpr instance Show a => Show (GExpr a) instance Eq a => Eq (GExpr a) instance Data a => Data (GExpr a) module Language.Lambda.SimplyTyped.Syntax data Type a Base :: a -> Type a Arrow :: (Type a) -> (Type a) -> Type a data Expr s a c Var :: s -> Expr s a c App :: (Expr s a c) -> (Expr s a c) -> Expr s a c Lam :: s -> (Type a) -> (Expr s a c) -> Expr s a c Constant :: c -> Expr s a c instance Typeable1 Type instance Typeable3 Expr instance Show a => Show (Type a) instance Eq a => Eq (Type a) instance Data a => Data (Type a) instance (Show s, Show a, Show c) => Show (Expr s a c) instance (Eq s, Eq a, Eq c) => Eq (Expr s a c) instance (Data s, Data a, Data c) => Data (Expr s a c)