X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Flambda-delta%2Flib%2Fcps.ml;h=9fc5dc9b22285d1f62a08090b845fe1b4e7b110d;hb=338e3e5c639fbcfeeb347a0121cacc6c0f1fc42a;hp=14b9d4a2c67c361938344372e7f32aa6de01b258;hpb=e86383ae4805a526b3acca2ef3c936b3f22daaad;p=helm.git diff --git a/helm/software/lambda-delta/lib/cps.ml b/helm/software/lambda-delta/lib/cps.ml index 14b9d4a2c..9fc5dc9b2 100644 --- a/helm/software/lambda-delta/lib/cps.ml +++ b/helm/software/lambda-delta/lib/cps.ml @@ -30,6 +30,13 @@ let rec list_rev_map_append f map ~tail = function let f hd = list_rev_map_append f map ~tail:(hd :: tail) tl in map f hd +let rec forall2 f map l1 l2 = match l1, l2 with + | [], [] -> f true + | hd1 :: tl1, hd2 :: tl2 -> + let f b = if b then forall2 f map tl1 tl2 else f false in + map f hd1 hd2 + | _ -> f false + let list_rev_append f = list_rev_map_append f (fun f t -> f t) @@ -39,6 +46,13 @@ let list_rev_map = let list_rev = list_rev_append ~tail:[] +let list_fold_right f map l a = + let map f a m = map f m a in + list_rev (list_fold_left f map a) l + let list_map f = list_rev_map (list_rev f) +let list_iter f map l = + let map f () x = map f x in + list_fold_left f map () l