A Guide to Monads in Haskell

Jean-Sébastien Basque-Girouard
The Startup
Published in
8 min readApr 28, 2020

--

Intro

Monads are the most important structures in Haskell (no real world Haskell application can be built without them) but they are difficult to grasp for most programmers because they have few analogs in other languages.

This is a description of monads in Haskell from the point of view of an experienced software engineer with more object-oriented programming experience than purely functional. It’s disorienting to jump into lazy, purely functional code from other programming backgrounds and I’m hoping this will help other engineers make quicker progress. I’ll talk a bit about type classes and then I’ll describe common ones that represent algebraic structures to give some context for what monads are and how they are used. I’ll presume that you know Haskell basics and that you’re familiar with functional idioms like the map function, which have made their way into most programming languages by now.

You Will Not Know Monads After Reading This

I will not go into different Monad implementations or give extensive examples, even though that’s how you will gain a working knowledge of Haskell. Rather, the goal of this post is to guide you in the right direction for your study, because I’ve seen too many tutorials do a useless job of trying to give intuition about monads like they are…

--

--

Jean-Sébastien Basque-Girouard
The Startup

Software engineer helping develop a static analysis platform written in Haskell at Sonatype, formerly Muse.Dev