<NME> numerals.py
<BEF> ADDFILE
<MSG> Added some lambda calculus

<DFF> @@ -0,0 +1,46 @@
+"""
+Lambda calculus.
+
+* http://en.wikipedia.org/wiki/Church_encoding
+* http://www.cs.bham.ac.uk/~axj/pub/papers/lambda-calculus.pdf
+* http://vanderwijk.info/blog/pure-lambda-calculus-python/
+* http://eflorenzano.com/blog/2008/11/20/lambda-calculus/
+
+Just for the fun of it.
+"""
+
+
+identity = lambda x: x
+self_apply = lambda s: s(s)
+
+select_first = lambda first: lambda second: first
+select_second = lambda first: lambda second: second
+
+make_pair = lambda first: lambda second: lambda func: func(first)(second)
+
+apply = lambda func: lambda arg: func(arg)
+
+cond = lambda e1: lambda e2: lambda c: c(e1)(e2)
+
+true = select_first
+false = select_second
+
+iff = lambda c, a, b: c(a)(b)
+
+not_ = lambda x: cond(false)(true)(x)
+and_ = lambda x: lambda y: x(y)(false)
+or_ = lambda x: lambda y: x(true)(y)
+
+# succ = λn.λf.λx.f (n f x)
+succ = lambda n: lambda f: lambda x: f(n(f)(x))
+
+zero = lambda f: identity
+one = lambda f: lambda x: f(x)
+
+two = succ(one)
+three = succ(two)
+
+iszero = lambda n: n(select_first)
+
+to_int = lambda n: n(lambda x: x + 1)(0)
+printl = lambda n: n(lambda x: x + 1)(0)

Added some lambda calculus