1 {-# LANGUAGE PatternSynonyms #-}
4 -- Module : Lambda.Term
5 -- Copyright : Tomáš Musil 2014
8 -- Maintainer : tomik.musil@gmail.com
9 -- Stability : experimental
11 -- Data types for λ terms.
14 module Lambda.Term where
18 data Term = Var VarName | Lambda VarName Term | App Term Term deriving (Eq)
20 pattern RedEx x t s = App (Lambda x t) s
21 pattern AppApp a b c = App a (App b c)
22 pattern EmLambda x y t = Lambda x (Lambda y t)