Being passionate by functional programming I am often asked about how and where one can learn more about this style. Hence, I decided to compile some resources on the subject to suggest a path to this beautiful world.
Some purists probably will hate me for this choice.
In this path I tried to add resources on fundamental functional concepts and tools, then an introduction to some functional patterns like Combinators, Category Theory, Railroad Programming and finally a material to deepening into complex subjects.
After all, I also added some tips on dedicated functional languages that I found easy to play with or that I simply love to work with.
The Yellow Bricks Road
Functional Programming Principles - Article about basic principles of the functional paradigm, like pure functions and immutability
Becoming Functional - An excellent book about the functional paradigm as a whole, presenting topics from functional principles like pure functions to advanced techniques like pattern matching. Unfortunately, the example is in Java.
Functional Design Patterns - An amazing talk about how to combine different pieces of pure functions into more complex applications.
Professor Frisby Mostly Adequate Guide to Functional Programming - An excellent resource on more complex functional patterns using Category Theory. This approach is less common on Front End and probably we can get most of the benefits of the functional paradigm without the complexity of an entire branch of mathematics.
Category Theory for Programmers - The most recognized and advanced resource on Category Theory for development ends.
Going full functional
If you enjoyed your travel and want to keep going into this path, I recommend that you play with some fully functional programming language. I suggest Elm, ReasonML, and Clojure.
The last one is Clojure, a JVM language, dynamically typed and from the LISP family. It is used primarily on the back-end and is well suitable for describing complex domain since it’s syntax is very flexible and can be customized in a way to better describe your problem space.
You can find more about these languages here:
- Elm: Documentation and Code Example
- ReasonML: Documentation and Code Example
- Clojure: Best Book for new Clojurists and Code Example
The Lambda World is a vast and beautiful one, you will find many ways of thinking and solving problems. That is the main reason why I love FP, it not only brings new tools to your workbench but also constantly shifts your mental models. In this segment I could not leave the most impactful talk on my perspective on the work and profession on software engineering: Simple Made Easy by Rich Hickey, the creator of Clojure.
I hope these tips help you and fair travel!