So I started reading about Free Monads in Haskell inspired from the Functional Pearl - Data types a la carte ( by Wouter Swierstra. And possibly after a long time really finding myself into an information overload with a topic in functional programming.

There are quite a few references on Free Monads out there on the Web ..
a. Why free monads matter (
b. What makes the free monad free? (
c. Free Monads In Haskell (

and a series by +Edward Kmett on the Comonad.Reader starting with

However I am still struggling to understand what it formally means to be a Free Monad - what's the freedom out there. Well, Swierstra's paper mentions that "In general, a structure is called free when it is left-adjoint to a forgetful functor." .. well what ? 

This leads into understanding what it means by a Forgetful Functor and people really have struggled to formalize the definition of a forgetful functor in a way that makes sense to someone not an expert in Category Theory. Someone asking for a formal definition on mathoverflow gets an answer "They are like pornography: you know them when you see them" (

Looks like quite a long way to go for me to understand what's free in a free monad :(
Shared publiclyView activity