An oversimplified version: the monad rules&#x2F;type signature only allow for possibly-recursive sequences of statements. That admits straight-line code as well as if, while, and for. But it doesn&#x27;t allow for any exceptional loop exits (more formally, doesn&#x27;t allow for any backwards edge from node A to B unless A postdominates B).<p>There are ways to transform code to allow this to work (there has to be, since Haskell is Turing-complete), but it&#x27;s not straightforward.