effect-stack (hackage): The mtl provides a nice way to write monadic actions which take advantage of a particular kind of effect (say, statefulness or exception handling) without being forced to say exactly which monad is providing that effect. However, if a transformer stack includes two transformers that provide the given effect, mtl does not provide a clean way to disambiguate which one is wanted; the topmost one is always chosen.  This package provides tools for disambiguating without being forced to choose a particular transformer stack. It provides a separate stack for each kind of effect; you may then disambiguate by depth within each stack. For example, in a stack with two StateT transformers, one can write  for access to the topmost state effects, or  for access to the state from underneath the topmost StateT, no matter how deep in the stack the two StateTs are.  See the readme for more detailed motivation, usage examples, and documentation.
Keywords: bsd3|control|library