module Syntax (Expr(..), Decl(..), Program) where data Expr = Var String | App Expr Expr | Lam String Expr | Let [Decl] Expr deriving (Eq, Show) data Decl = Decl { declName :: String , declRhs :: Expr , declWhere :: Maybe [Decl] } deriving (Eq, Show) type Program = [Decl]