>>9 here
I read just a bit about them on wikipedia,
In functional programming, a monad is a kind of abstract data type used to represent computations (instead of data in the domain model)
like lisp closures
Monads allow the programmer to chain actions together to build a pipeline, in which each action is decorated with additional processing rules provided by the monad.
So pretty much, they're closures of closures that provide functionality for you to manage the enclosed closure (as a FIFO right? it's probably two-way I guess, like a tconc list), which also make use of a protocol, the 'additional monad processing rules', which just adds some more features to whatever the hell haskell programmers are doing with them. It's manageable curry function. Seriously, I can write something like that in lisp in single fucking day.