How much of the mtl, if any, should be exported by classy-prelude? I can certainly picture Identity, ReaderT, WriterT, etc types being included, and possibly even the MonadReader, MonadWriter, etc typeclasses. One downside is that names like ask, get, and put may be common enough in user code that it could cause a conflict.
I don't have a strong opinion on this at all, I'm interested in input.
I would be for it, except what to do when the user wants to use RWS in their code? Wouldn't they now have a set of naming conflicts from classy-prelude which requires a hiding list to be repeated in each module?
There shouldn't be any naming conflicts, since we'd just re-export the names verbatim from RWS. The only problem would be the conflicting type and constructor names between strict and lazy variants.
I've included some simple ones: Identity and ReaderT.