Appendix C. Where to go from here

 

You’ve now had some experience writing functional programs in Java. The extent to which you apply what you’ve learned to everyday Java programming is up to you. Aiming to be 100% functional is probably too much for many Java programmers. Using fully functional I/O, for example, is probably not something that every reader will want to do in their production code. But if you want to adopt the functional programming paradigm for professional projects, you have choices to make.

C.1. Choosing a new language

The first choice is the language you’ll use. Often, choosing a different (more functional-friendly) language isn’t an option. But sometimes it is. We’ve only scratched the surface of the subject, and with the right tools you can go much further. Choosing a functional language may seem complex, but it’s not. Switching to a different language will only be interesting if you choose a much more powerful language in the domain. If you’ve read this book and want to go further, you won’t be interested in a weakly typed language. So you have three possible choices: Haskell, Scala, and Kotlin (or possibly a fourth, Frege).

C.1.1. Haskell

C.2. Staying with Java

C.3. Further reading