<div dir="auto">This is something I’ve pondered on and off, And the classes PrimMonad and PrimMonadBase are super stable  </div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">Argument in favor of base : </div><div dir="auto"><br></div><div dir="auto">there’s absolutely code in base, and packages like array, which would benefit from PrimMonad.   Plus it might allow more reuse / encourage more ST monad code in the wild? (I always feel like ST monad is underused. )</div><div dir="auto"><br></div><div dir="auto">Argument against base: </div><div dir="auto">Then a lot of PrimMonad instances would need to live in transformers. And I’m not sure if maintainers over there would want that? </div><div dir="auto"><br></div><div dir="auto">Argument in favor of mtl: it’s where all the other transformer stack stuff gets defined. So all the upkeep for monad instances is already going on there regularly. </div><div dir="auto"><br></div><div dir="auto">Argument against mtl :  aside from concentrating the upkeep on transformer stack instances it seems like it wouldn’t enable new improvements to base.  </div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">Another option is to have some sort of clone of the class in base , as long as it pays for itself in code reuse / simplification within base</div>