module RevFletf; // let rec foldr f z xs = // match xs with // | Nil -> z // | Cons(x,xs') -> f x (foldr f z xs') // ;; // let fleft op e xs = // let step x f a = f (op a x) // in foldr step (fun u -> u) xs e // ;; // Higher-order constructs are not suppored by abs! def List fleft(op)(List e, List xs) = (foldr(f(op(a,x)))(id, xs))(e); // let rev l = fleft (fun xs x -> Cons(x,xs)) Nil l // ;; // () { }