Eff has a bigger semantic issue to deal with first.<p>It is only composable for commutative effects. Once you introduce non-commutative effects like throw&#x2F;catch or nondeterminism, the semantics of a block of code using more than one effect depends on the order in which interpreters are run.<p>Monad transformers escape this issue by allowing code to specify the effect nesting order in the type. They&#x27;re no panacea either, of course. But they currently allow somewhat better code reuse and abstraction properties than the Eff approach does.<p>If Eff ever gets the ability to control the semantics of non-commutative effects, it will have a much more compelling story.