Hopefully I’ve convinced you why functional programming is important for the challenges of our time. We only scratched the surface of this rich field. I hope you’ll continue learning and applying functional programming on your own.
So, where should you go next? I
find it easier to learn abstract principles by writing real code. You could
start by learning one of the scripting languages on the JVM, such as Groovy,
JRuby, or Jython. While none of these languages is a functional language,
per se, all have many functional features missing in Java, such as anonymous
functions, collections with
fold, and other higher-order
functions. (The names used by these languages may be different.) Along the
way, you’ll find these languages useful for general development
However, consider learning a real functional language, where you can see functional programming fully realized. In a few examples in this book we labored to represent some ideas in Java. Functional languages make them much easier to use.
Scala is my personal favorite, because it strives to unify both object-oriented and functional programming. Scala’s object-oriented support will let you continue to use familiar object-oriented concepts while you learn and start using functional concepts. Just be careful to avoid the trap of staying in familiar territory! [Wampler2011] provides a brief overview of the language and its compelling features. [Eckel2011] discusses how Scala has the succinct ...