FP patterns in clojure