e3682c1c7c0a8e714038c059b50fcb1880902d99
[fp.git] / src / Lambda / Term.hs
1 {-# LANGUAGE PatternSynonyms #-}
2
3 -- |
4 -- Module      :  Lambda.Term
5 -- Copyright   :  Tomáš Musil 2014
6 -- License     :  BSD-3
7 --
8 -- Maintainer  :  tomik.musil@gmail.com
9 -- Stability   :  experimental
10 --
11 -- Data types for λ terms.
12
13
14 module Lambda.Term where
15
16 type VarName = String
17
18 data Term = Var VarName | Lambda VarName Term | App Term Term deriving (Eq)
19
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)
23
24