tweaked arithmetic
[lambda.git] / arithmetic.mdwn
index d272487..bc531ec 100644 (file)
@@ -44,7 +44,20 @@ Here are a bunch of pre-tested operations for the untyped lambda calculus. In so
        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