Functional programming adventures in Clojure, Erlang, and Haskell