Yes, this is "standard". The reason is a historic refactoring of the mtl
package to accomodate two different styles of handling type classes with multiple parameters, like the MonadWriter
class : type families and functional dependencies.
The mtl
package retains the older functional dependencies approach, whereas monads-tf
has the newer type families approach.
As there are now libraries in the Haskell ecosystem that use monads-tf
, it's inevitable that both will end up in the package database on typical installations - I've personally been experiencing it for several weeks.