"There is also the situation where the package name isn’t essential and
shouldn’t get in the way when naming modules. For example, there are a
lot of monad transformers in the world. The `transformers` package
implements some of them; others are added by other packages. It is good
if the module that implements a certain kind of monad transformer has a
name of the form `Control.Monad.Trans.⟨type-of-transformer⟩`. Having the
package name in the module name would be like revealing an
implementation detail."
Not sure I agree that that is necessarily the case.
Transformers.ExceptT
Transformers.ReaderT
These.ChronicleT
This lets me know exactly where these transformers came from, just by reading the module name.