Problem 158 -- or how to write Haskell in Clojure.