Embedded DSLs in Haskell are really cool, but sentences like these confuse me:<p>> <i>The do statement can be reified by normalization.</i><p>???<p>> <i>Control flow is problematic and cannot be used directly, but there is a generalization of Haskell Boolean that does allow deep-embedding capture.</i><p>What does it mean for control flow to be problematic? Control flow is the most basic feature I expect (it's not shift/reset), so what's up with <i>problematic</i>? What does it even mean for something so basic to be problematic?<p>For someone unfamiliar with these techniques, it's hard to tell the difference between a nifty trick that makes it possible to make something work at all, like a proof of concept, and a general tool that can be used to solve general problems.