After working on Swift for 2 seconds it’s likely you’ll find someone mention “you should be going functional”. If you follow this lead and do a bit of reading (and at this point it’s reasonable to assume you haven’t spent much time working with functional languages like Lisp or OCaml) then the “monad” word will crop up.


After reading a bunch of explanations on monads (and being given a nice intro by the venerable Manuel Chakravarty) I will say this: you should separate your comprehension of the concept of monads into 2 parts:

  1. Learn what a monad actually ‘is’
  2. Learn when you’d want to use one

The first part is surprisingly simple (it’s just some mathematical assertions which this monad ‘thing’ must conform to). The second is more involved, thus I’d recommend grasping the first part, first :)

Rather than coming up with my own explanation of what a monad is (and believe me, the world could do without any additional “this is my monad tutorial”) I recommend you check out the following:

  1. Brian Beckman, Don’t Fear the Monad [this is a YouTube video and it. is. awesome. Beckman is an animal - just check out his LinkedIn, AND he has the cojones to wear an Akubra hat indoors].
  2. Phillip Wadler, The Essence of Functional Programming
  3. Phillip Wadler, Comprehending Monads
  4. Real World Haskell Chapter 14, Monads

Read these carefully and you’ll be able to tell someone “I know monads”.