There seems to be two types of monad transformers:
Reader
, Writer
, State
, Cont
?)Maybe
, List
?)So it seems to me that we actually have two transformers here, ErrorT
and EitherT
, and that there is a confusion that ErrorT
should be EitherT
and should be of the second type listed above. But maybe it is useful to have an ErrorT
that just happens to use Either
under the hood, the same way the other “type 1” transformers are all newtypes around some more or less “incidental” type?
My conclusion thus is that we should keep ErrorT
as-is plus add EitherT
to transformers.
That‘s a +1 to Gabriel’s approach 2.
I'm still in favor of adding `EitherT` to `transformers` in addition to `ErrorT`. The only person who disagreed the last discussion was Ross, so it's a matter of convincing him.On Tue, Aug 13, 2013 at 1:36 AM, David Luposchainsky <dluposchainsky@googlemail.com> wrote:
Morning,
Another discussion that didn't reach conclusion: "Proposal to solve the
`EitherT` problem." Let's do some proposal cleanup :-)
That's the one I would recommend.
On 2013-06-16 23:52, Gabriel Gonzalez wrote:
> Approach 2: Add `EitherT` to `transformers` alongside `ErrorT` and
have them both implement `MonadError`.
- Doesn't break anything, and gets rid of the "exception-vs-error"
discussion.
- Not all uses of Either are to distinguish between success and failure,
sometimes it's just a convenient way of short-circuiting.
- Fits in well with all the other transformers of type "MonadT".
- MonadError instance makes possible use as throw-catch-y transformer clear.
David
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries