module RevDl;
def B comp(f, g)(A x) = f(g(x)) ;
def A id(A x) = x;
//(* walk :: list -> (list -> list) *)
def B walk(List xs) =
case xs {
Nil => id; // Higher-order constructs are not supported by abs!
Cons(x, xsP) => ((A a) => comp(wal(xsP), ((List ys) => Cons(x,ys)))(a));
};
// (* rev :: list -> list *)
// def List rev(List l) =
// in walk l Nil
{
}