transformers: remove instance MonadFix ExceptT and ErrorT

Henning Thielemann schlepptop at henning-thielemann.de
Sun Aug 17 11:20:39 UTC 2014


Am 13.08.2014 um 02:02 schrieb David Feuer:

> On Aug 12, 2014 7:50 PM, "Bertram Felgenhauer"

>  > I tend to agree that those MonadFix instances are not immensely useful.
>
>  From my perspective as a generally ignorant person, I think these
> should be kept as long as
>
> 1. They satisfy the required laws and
> 2. No more useful instances can be written.
>
> That said, it might make sense to remove them if
>
> 1*. You can formulate a new law that distinguishes the instances you
> consider sensible from the ones you consider insensible.
>
> and to change them if
> 2*. More useful instances can be written.

I was not argueing from a mathematical point of view but from a safety 
point of view. It's the same reason why I object to, say (Ord (Complex 
a)) and (Num (a -> b)).


Incidentally, I had the ThreadId problem last week, but fortunately I 
could solve it with myThreadId instead of mfix.


> If potential confusion is the only issue, improving the documentation
> would probably be the way to go.

Generally I prefer removing dangerous behaviour instead of documenting 
it. The documentation may easily be missed, a compiler error message cannot.



More information about the Libraries mailing list