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
}