Proposal to solve the `EitherT` problem.

Henning Thielemann lemming at henning-thielemann.de
Sun Jun 16 23:59:37 CEST 2013


On Sun, 16 Jun 2013, Gabriel Gonzalez wrote:

> There are three approaches that I'd like to submit for consideration and 
> receive feedback on:
>
> * Approach 1: Remove the `Error` constraint from `transformers`
>
> Disadvantage: This silently breaks all existing uses of `fail`.  I don't know 
> any way to add a compiler warning to notify downstream libraries of this 
> change.
>
> * Approach 2: Add `EitherT` to `transformers` alongside `ErrorT` and have 
> them both implement `MonadError`.
>
> Disadvantage: Bloat from having two almost identical monad transformers. 
> However, there is precedent from duplicating `StateT`, `WriterT` and `RWST` 
> for both strict and lazy instances.

I prefer this one. Additionally one might deprecate ErrorT.

Btw. MaybeT also went into transformers although there was already a 
MaybeT package.


> * Approach 3: Convince Edward to reduce the dependencies of the `either` 
> package and submit the simplified version to the Haskell platform.
>
> Disadvantage: One extra import instead of just importing `transformers`.
>
> * Approach 4: None of the above.
>
> Disadvantage: Packages that depend on `either` have very low prospects of 
> making it into the Haskell platform.



More information about the Libraries mailing list