concrete functor and monad transformers

#76Reverse functor consistency

Shouldn't we have a ReverseT and type Reverse = ReverseT Identity for the sake of consistency?

  • You mean that Reverse should be called ReverseT? In that case ReverseT Identity would be equivalent to Identity.

  • As of now Reverse f a is named with the scheme that we usually use to name monad transformers on the identity monad. If instead we chose to rename what is now Reverse f a to ReverseT f a and then add a new type synonym type Reverse = ReverseT Identity we would be consistent with the rest of the monadic transformers such as StateT, AccumT or `MaybeT as some examples. Reverse is in fact a monad transformer which leads me to believe this is appropriate.

  • Furthermore, we could provide an instance of MonadTrans ReverseT.