The Haskell 98 Report takes two lines:
foldr f z [] = z
foldr f z (x:xs) = f x (foldr f z xs)
Clojure does it like this (note the overloading - this is both "foldl" and "foldl1" in Haskell terms): http://github.com/richhickey/clojure/blob/49a7d6b8e14050a45d...