So I started reading about Free Monads in Haskell inspired from the Functional Pearl - Data types a la carte (http://www.cs.ru.nl/~W.Swierstra/Publications/DataTypesALaCarte.pdf) 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 (http://www.haskellforall.com/2012/06/you-could-have-invented-free-monads.html
b. What makes the free monad free? (http://www.typesandotherdistractions.com/2010/12/what-makes-free-monad-free.html)
c. Free Monads In Haskell (http://blog.omega-prime.co.uk/?p=34)

and a series by +Edward Kmett on the Comonad.Reader starting with http://comonad.com/reader/2011/free-monads-for-less/.

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" (http://mathoverflow.net/questions/19405/definition-of-forgetful-functor).

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