It&#x27;s not particularly worse than monad transformers with respect to non-commutative effects. With monad transformers, one can trip up just as happily on exceptions, and mtl-style stack-polymorphic code can be run with various effect orderings with possibly varying semantics.<p>I failed to mention though that Eff would also benefit from some boost to type inference for open sums. Currently it&#x27;s throwing up hands for component effects with polymorphic inner type parameters, like `State s` or `Reader r`, so we can&#x27;t do things like `put 0`, but only `put (0 :: Int)` (in the absence of other type annotations in outer scopes). It&#x27;s fortunately not an impossible problem; we just need to allow for unique projections from sums in our type-level machinery (this requires some annoying boilerplate currently, but maybe GHC 8.0 will make it easier with the new kind system).