11 min read

Functional Programming Resources

Start Here

These are my recommended resources to start with, if you are planning to go down the same path and learn functional programming.

  • โ˜… Functional Programming Basics - Whatโ€™s It All About? “Functional Programming is programming without assignment statements.” This means data in memory is (mostly) immutable and that makes parallelism for multiple CPU cores much easier to reason about. This article is a very high-level introduction into one of the core concepts of FP and ties it to one of the main benefits. I do think there’s more to it than that, but this should get you excited about it.
  • โ˜… Professor Frisby’s Mostly Adequate Guide to Functional Programming Thorough and practical introduction to functional programming concepts using JavaScript. Gets you up to speed quickly, and there’s no weird syntax to get used to. A great resource to start with.
  • โ˜… ๐Ÿ“บ (30m) Functional programming patterns for the non-mathematician (cut) Good introduction on how you can practically use composition, lenses, (which are built on monoids, functors, applicatives, and monads) for nesting (composition), null checking (Maybe), error handling (Either), and accumulation (reduce) in JavaScript.
  • โ˜… ๐Ÿ“• PureScript by Example PureScript’s syntax and libraries are almost identical to Haskell’s, and this book is much shorter and more practical. I’d recommend learning PureScript (and Haskell) by starting with this book.
  • โ˜… Getting started with Haskell โ€ข Stack Overflow Gives you a high-level overview of what the journey of learning Haskell can look like. Several good pointers to articles and resources.
  • โ˜… ๐Ÿ“• Haskell Programming from First Principles Massive introduction into Haskell with lots of explanation and exercises. Some people find it too exhaustive, but I like this book much better than the free “Learn you a Haskell”, although it’s still very academic. It starts off with a very abstract introduction to lambda calculus, which I believe is an important basis to know about before diving into Haskell. It does make the first chapter a little strange โ€” keep reading and don’t judge the book until after chapter 2.
  • Mapping the Monado Pragmatic and honest introduction to monads. Also includes an excellent list of resources at the end.
  • โ˜… Monoids, Functors, Applicatives, and Monads: 10 Main Ideas Great summary of the key points on the four algebras that show up everywhere in Haskell (and are hiding in other languages as well).
  • Conal Elliott - Denotational Design: From Meanings To Programs Conal shows how he designs a simple, functional API for a graphics manipulation framework from scratch and iterates on it to make use of already available algebraic structures that maximize reusability and minimize implementation effort.
  • โ˜… Haskell Typeclassopedia Given how important it is to understand types in Haskell, this article explains the most abstract (read: used everywhere) type classes in great detail and helps form an intuitive understanding of functor, applicative, and monad.
  • โ˜… Diehl: What I Wish I Knew While Learning Haskell The first two sections Basics and Monads are packed with great practical tips and a solid foundation for understanding monads, an abstract concept that shows up everywhere in Haskell and functional programming.

General

JavaScript

Haskell

Practical Haskell

Haskell Resources

PureScript

Swift

Category Theory

Functional Patterns to Manage Complexity