New adventures in functional programming

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
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.

John Hughes: Why Functional Programming Matters

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).

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.

Haskell

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
One-Time
Monthly
Yearly

Make a one-time donation

Make a monthly donation

Make a yearly donation

Choose an amount

¤5.00
¤15.00
¤100.00
¤5.00
¤15.00
¤100.00
¤5.00
¤15.00
¤100.00

Or enter a custom amount


Your contribution is appreciated.

Your contribution is appreciated.

Your contribution is appreciated.

DonateDonate monthlyDonate yearly

Do you like our visualizations? Buy them for yourself!

Visit our shop on Society6 to get a printout of our vizs.