The interest in functional programming languages has been increasing recently. The success of Scala and Spark is apparent, but the demand for Haskell, Clojure, and OCaml programmers is also rising. Lisp is still alive and there are successful companies devoted to it. Learning functional programming languages is complex, and the knowledge of “traditional” languages is of little help, but the good news is that you can get started with excellent study materials.
Functional programming isn’t something like logic programming? Do people still use Lisp? Is there any successful company that is using a functional language? Can I do AI/ML/etc with a functional language? These are common concerns against functional programming. Jane Street is using OCaml, RavenPack and Grammarly are using Common Lisp. Search for jobs requiring Clojure, Scala, or Haskell on LinkedIn and you’ll be surprised! And all of these languages provide you with a plethora of libraries including high-quality machine learning and deep learning tools.
As software becomes more and more complex, it is more and more
John Hughes: Why Functional Programming Matters
important to structure it well. Well-structured software is easy to write
and to debug, and provides a collection of modules that can be reused
to reduce future programming costs. […] since modularity is the
key to successful programming, functional programming offers important
advantages for software development.
Scala – the language of the future

If you are interested in data science, you have heard about Spark. Although you can use it from Python, it was written in Scala and most data engineers are adapting to the language. The ultimate guide to Scala is the
We loved it, and it provides an intro to Spark too. However, we think it is fast-paced and not suitable for beginners or for those who don’t have a solid background in computer science. It goes through very important topics very quickly, so we think it is hard to digest the material for a novice. If you don’t have any experience with functional programming and/or you don’t know much about the theoretical side of programming, it might be better to start with more gentle materials.
Scheme – learn some theory along with functional programming

Scheme and its successor Racket are excellent languages to learn the basics of functional programming (and computer science).
- Simply Scheme – a wonderful intro to programming and computer science
- How to Design Programs – this is a must-read after Simply Scheme
- Structure and Interpretation of Computer Programs – hard-core computer science and programming language theory
If you have some experience with programming and computer science, you will love The Little Schemer and The Seasoned Schemer. These books are amazing! They use a distinct pedagogical style as they try to imitate a dialogue between a teacher and a student. The teacher shows examples to the student and asks him to complete partial solutions and later full solutions.
Common Lisp – an oldie but a goodie fellow

Lisp was the language of AI research and industry since the inception of the field and it is still used by a dedicated group of developers around the globe.
- Common Lisp – A Gentle Introduction to Symbolic Computation – a lightweight intro
- Paradigms of Artificial Intelligence Programming (not a free ebook!) – the bible of functional programmers, also a great book on GOFAI (Good Old-Fashioned AI)
- Practical Common Lisp – if you wanna see how Common Lisp is used to solve real-life problems, this book is for you
Haskell

- Learn You a Haskell for a Great Good – probably Haskell is the most widely used functional language after Scala. This book is a fantastic resource to learn practical Haskell
- The Haskell Road to Logic, Maths and Programming (not a free ebook!) – If you are into Logic and you’ve ever wondered how math, logic and computation are related, this book is for you.
- Computational Semantics with Functional Programming (not a free ebook!) – this book doesn’t teach you any skill that can be useful on a job, but it is beautiful. If you are into formal semantics, read it!
Clojure

- Clojure for the Brave and True – Clojure is the modern-day Lips that is used as a backend and as a frontend language too. This freely available book is a one-stop-shop to get yourself skilled with functional programming that can be used in the real world.
Some theory

- An Introduction to Functional Programming Through Lambda Calculus – we’ll teach you a lot about the theory behind functional languages and types.
- Introduction to Mathematical Philosophy – although Bertrand Russel’s classic book is loosely related to functional programming, it’s worth reading it.
- To Mock a Mockingbird (not a free ebook) – Smullyan’s puzzles are excellent sources of fun. This book teaches you the very basics of combinatorial logic and lambda calculus.
- Conceptual Mathematics (not a free ebook) – a lovely book on category theory. Yes, you can be a functional programmer without knowing much about category theory and lambda calculus, but you cannot be an excellent (functional) programmer without knowing the very basics of the theoretical underpinnings
Make a one-time donation
Make a monthly donation
Make a yearly donation
Choose an amount
Or enter a custom amount
Your contribution is appreciated.
Your contribution is appreciated.
Your contribution is appreciated.
DonateDonate monthlyDonate yearlyDo you like our visualizations? Buy them for yourself!
Visit our shop on Society6 to get a printout of our vizs.


This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.