The Paradox of Partial Parametricity

Tab Atkins Jr. jackalmage at
Thu May 30 10:44:37 PDT 2013

On Thu, May 30, 2013 at 6:15 AM, Claus Reinke <claus.reinke at> wrote:
>> The fact that we can make it monadic is just a bonus; any time you see
>> "monad" just think "container++" - it's just a proven useful bit of
>> structure on top which makes it easy to work with the values inside
>> the container.  (It's a bit more abstract than that, of course, but
>> thinking in terms of containers works for many monads, and helps guide
>> understanding toward the more abstract notion.)
> You are aware of the over-simplification in that suggestion, but it
> can still be harmful to readers here (who may dismiss the simple examples
> and never get to the abstract notion). So, please pardon
> a little elaboration/clarification:

Believe me, it's not harmful.  It's a useful, and for many people
necessary, step in the process of understanding monads.  Many of the
common monads can be implemented and understood as containers, even if
they really represent more abstract concepts.  The more abstract
monads are difficult to understand unless you've already passed
through sufficient numbers of simpler examples, which often use the
simple "container-like" monads to help comprehension.

I gained true understanding of monads relatively recently, so I still
remember my learning process (which mostly involved reading
Typeclassopedia over and over again until things clicked).


More information about the es-discuss mailing list