Functional Programming Patterns in Scala and Clojure: Write Lean Programs for the JVM