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;