Want to learn the basic concepts of functional programming on simple and straightforward examples? This book is your trusted guide through all the new ideas you need to grasp as a beginner in the world of pure functions, closures, immutability, idempotence and other more or less obscure topics.

The purpose of this book is to explain the main concepts in functional programming as simply as possible in a language agnostic manner. That is not to say that we will not use actual code - rather that the focus is not on implementation details of a specific language, compiler or platform, but on the concepts themselves.

The examples are provided as:

  • drawings and diagrams
  • pseudocode
  • JavaScript - most of the time as simple as pseudocode, but you can actually run it!
  • various other languages showcasing a specific point, e.g. HTML, CSS, SQL, Clojure and others.

Who is this book for?

Anyone who wishes to learn more about functional programming! Some working knowledge about programming basics may be helpful, but ultimately it’s not a showstopper - just another thing to learn.

If you just started learning functional programming, my own personal recommendation is that you go through this book first, then master at least one concrete language and then go through it again as a refresher.

Who is this book NOT for?

Anyone who wishes to use it as a reference index, academic source or anything similar. Whenever I had to choose between clarity and simplicity of explanations on one side and formal correctness on the other, I chose simplicity.

How to access this book

This book is available online for free as a fully accessible website, making it easy to read and explore at your own pace. Whether you want to dive in on your desktop or browse on your mobile device, the web version is always there for you.

If you prefer offline access, you can purchase a downloadable PDF or EPUB version on Leanpub. Not only does this give you the convenience of reading anywhere, but it’s also a great way to support me as the author and my work. Your contribution helps ensure more projects like this can continue to be shared with the world. Thank you for reading and for your support!