{-# LANGUAGE DeriveDataTypeable #-} module Language.Lambda.SimplyTyped.Syntax where import Data.Data data Type a = Base a | Arrow (Type a) (Type a) deriving(Show, Eq, Data, Typeable) data Expr s a c = Var s | App (Expr s a c) (Expr s a c) | Lam s (Type a) (Expr s a c) | Constant c deriving(Show, Eq, Data, Typeable)