
list a ::= Nil | Cons a (list a);

;;

foldr f z l
  = case l of
      Nil -> z;
      Cons x xs -> f x (foldr f z xs)
    end;

foldl f z l
  = case l of
      Nil -> z;
      Cons x xs -> foldl f (f z x) xs
    end;

