module AvanziniOriginal; // Higher order not supported, only partially defined functions: // seehttp://docs.abs-models.org/#sec:partially-defined-functions // let comp f g = fun z -> f (g z);; def List comp(f, g)(A z) = f(g(z)); def List walk(List xs) = case xs { Nil => Nil; Cons(x,ys) => comp(walk(ys), (List z) => Cons(x, z)); }; // | Nil()-> (fun z -> z) // | Cons(x,ys) -> comp (walk ys) (fun z -> Cons(x,z));; def List reverse(List xs) = walk(xs,Nil); def List main(List xs) = reverse(xs); { // Main }