[Haskell-cafe] Improving MTL instances (was: Overlapping/Incoherent instances)

Henning Thielemann schlepptop at henning-thielemann.de
Wed Oct 15 16:50:19 EDT 2008


Ryan Ingram schrieb:
> On Mon, Oct 13, 2008 at 2:04 AM, J. Garrett Morris
> <jgmorris at cecs.pdx.edu> wrote:
>> Indeed - MTL seems to have been rewritten at some point in the past to
>> prefer exhaustive enumeration to overlap.
> 
> Indeed, and I actually think this is a weakness of the current
> implementation.  Anyone who comes up with a new transformer that
> provides different functionality than what is there needs to
> explicitly provide all the relevant instances, instead of letting
> MonadTrans do its thing.

 I long thought that it is unnecessary use of type system extensions to
require multi-parameter type classes for simple monads and its
transformer versions. I thought it would be enough to have atomar monads
like ST, IO and Identity, and monads like State, Reader, Writer,
Continuation can be offered exclusively in the transforming variant.
(State s a) would have to be defined as (StateT s Identity a) instead.
This way MonadState, MonadReader and the other classes become
unnecessary. However, 'lift' remains important with this design.


More information about the Haskell-Cafe mailing list