<div dir="auto">I think given AMP that transformers should use CPP to relax Monad constraints to Applicative on newer versions of base.<div dir="auto"><br></div><div dir="auto">As an example:</div><div dir="auto"><br></div><div dir="auto">except :: (Monad m) => Either e a -> ExceptT e m a</div><div dir="auto">except m = ExceptT (return m)</div><div dir="auto"><br></div><div dir="auto">could become</div><div dir="auto"><br></div><div dir="auto">except :: (Applicative m) => Either e a -> ExceptT e m a</div><div dir="auto">except m = ExceptT (pure m)</div><div dir="auto"><br></div><div dir="auto">Similarly some typeclasses in mtl could do with some relaxation. A related issue: <a href="https://github.com/haskell/mtl/issues/35">https://github.com/haskell/mtl/issues/35</a></div></div>