write-you-a-haskell/chapter4/lambda.hs
2015-01-06 18:27:45 -05:00

12 lines
240 B
Haskell

type Name = String
data Expr
= Var Name
| App Expr Expr
| Lam Name Expr
s, k, i :: Expr
s = Lam "x" (Var "x")
k = Lam "x" (Lam "y" (Var "x"))
i = Lam "x" (Lam "y" (Lam "z" (App (App (Var "x") (Var "z")) (App (Var "y") (Var "z")))))