{-# LANGUAGE DeriveDataTypeable #-} {- | An Untyped Lambda Calculus AST -} module Language.Lambda.Untyped.Syntax where import Data.Data -- | A polymorphic version of the AST to allow different symbol types data GExpr a = Var a | App (GExpr a) (GExpr a) | Lam a (GExpr a) deriving(Show, Eq, Data, Typeable) -- | A common symbol type choice type Sym = String -- | A common AST type Expr = GExpr Sym