X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?a=blobdiff_plain;f=arithmetic.mdwn;h=bc531ecddac814bf05bd763e06c24a01b7f04d24;hb=0b12f248cc9c6b7361a5e3b72d3096a264eec82f;hp=fc7249f6bfa8ac73fc468506d1df556ad4628909;hpb=af844d6cdbd502a2fe9aa0756ab83a84ff66909d;p=lambda.git diff --git a/arithmetic.mdwn b/arithmetic.mdwn index fc7249f6..bc531ecd 100644 --- a/arithmetic.mdwn +++ b/arithmetic.mdwn @@ -39,12 +39,25 @@ Here are a bunch of pre-tested operations for the untyped lambda calculus. In so let head = \lst. lst (\h sofar. h) junk in let tail = \lst. (\shift lst. lst shift (make_pair empty junk) get_2nd) ; where shift is - (\h p. p (\t y. make_pair (make-list h t) t)) in + (\h p. p (\t y. make_pair (make_list h t) t)) in let length = \lst. lst (\h sofar. succ sofar) 0 in let map = \f lst. lst (\h sofar. make_list (f h) sofar) empty in let filter = \f lst. lst (\h sofar. f h (make_list h sofar) sofar) empty in ; or let filter = \f lst. lst (\h. f h (make_list h) I) empty in - + + ; append list2 to list1 with: list1 make_list list2 + let singleton = \x f z. f x z in + let reverse = \lst. lst (\h sofar. sofar make_list (singleton h)) empty in + let zip = \left right. left (\h sofar. sofar (\x y. isempty y + sofar + (make_pair (make_list (\u v. head y (u v) h) x) (tail y)) + ) + (make_pair empty (map right (\h u v. u v h))) + ) + (\x y. reverse x) in + let all = \f lst. lst (\h sofar. and sofar (f h)) true in + let any = \f lst. lst (\h sofar. or sofar (f h)) false in + ; version 1 lists @@ -198,10 +211,10 @@ Here are a bunch of pre-tested operations for the untyped lambda calculus. In so )) in - ; Curry's fixed point combinator + ; Rosenbloom's fixed point combinator let Y = \f. (\h. f (h h)) (\h. f (h h)) in ; Turing's fixed point combinator - let Z = (\u f. f (u u f)) (\u f. f (u u f)) in + let Theta = (\u f. f (u u f)) (\u f. f (u u f)) in ; length for version 1 lists @@ -218,7 +231,7 @@ Here are a bunch of pre-tested operations for the untyped lambda calculus. In so - fact Z 3 ; returns 6 + fact Theta 3 ; returns 6 + +