Functional programming patterns in Scala and Clojure : write lean programs for the JVM - Bevilacqua-Linn, Michael (Pragmatic programmers., 2014)