--- /dev/null
+{-# LANGUAGE PatternSynonyms #-}
+
+-- |
+-- Module : Lambda.Term
+-- Copyright : Tomáš Musil 2014
+-- License : BSD-3
+--
+-- Maintainer : tomik.musil@gmail.com
+-- Stability : experimental
+--
+-- Data types for λ terms.
+
+
+module Lambda.Term where
+
+type VarName = String
+
+data Term = Var VarName | Lambda VarName Term | App Term Term deriving (Eq)
+
+pattern RedEx x t s = App (Lambda x t) s
+pattern AppApp a b c = App a (App b c)
+pattern EmLambda x y t = Lambda x (Lambda y t)
+
+