Mon Aug 8 18:15:07 CEST 2011

do and binding

From [1] (sometimes you really need to see things spelled out for you):

    When you define a DSEL you usually use the do-notation for the
    binding construct in the embedded language.  This is the only
    programmable binding construct (by overloading (>>=)), so there is
    little choice.

[1] http://augustss.blogspot.com/2011/07/impredicative-polymorphism-use-case-in.html