summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/bool-prog.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lambda-calcul/haskell/bool-prog.lisp')
-rw-r--r--lambda-calcul/haskell/bool-prog.lisp19
1 files changed, 19 insertions, 0 deletions
diff --git a/lambda-calcul/haskell/bool-prog.lisp b/lambda-calcul/haskell/bool-prog.lisp
new file mode 100644
index 0000000..86fab0a
--- /dev/null
+++ b/lambda-calcul/haskell/bool-prog.lisp
@@ -0,0 +1,19 @@
+(def False (lam (f t) f))
+(def True (lam (f t) t))
+(def Not (lam (b) (b True False)))
+
+(Not True)
+
+(def And (lam (a b) (a False b)))
+(def Or (lam (a b) (a b True)))
+(def If (lam (b x y) (b x y)))
+(def Zero (lam (z s) z))
+(def Succ (lam (n z s) (s n)))
+(def One (Succ Zero))
+(def Two (Succ One))
+(def Three (Succ Two))
+(def IsZero (lam (n) (n True (lam (m) False))))
+
+(Or (IsZero One) (IsZero Two))
+
+(IsZero Zero)