Monatron is an experimental extensible monad transformer library for Haskell. Its design is described in the article " Monatron: An Extensible Monad Transformer Library". The theoretical basis for it can be found in the article " Modular Monad Transformers".Monatron is extensible in the sense that one can easily add new monad transformers to the library, without needing to know about the other monad transformers and operations in the library. This is possible because it implements uniform liftings. For example, a monad m which implement environments of type e can be in the class ReaderM e (this is standard). The interesting bit is that we get an instance:
instance (ReaderM e m, MonadT t) => ReaderM e (t m)Since the monad transformer t is an arbitrary one, the lifting will be uniform for all the monad transformers in the library, and also for the monad transformers to come.