<div dir="ltr">Edward already pointed this out, however it seems to me that most commenters on this thread are neglecting one salient point: transformers is Ross&#39;s package.  I don&#39;t think anyone is presenting any new arguments at this point, simply rehashing their support for one stance or another.  Given that, this appears to be devolving into &quot;everyone respond on thread until Ross caves,&quot; which I think is a bad precedent.<br>
<div><div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 14, 2013 at 6:03 PM, Gábor Lehel <span dir="ltr">&lt;<a href="mailto:illissius@gmail.com" target="_blank">illissius@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">+1 also, for what little it&#39;s worth.<br>
<br>
Maybe it would&#39;ve been a better idea to have separate types for<br>
&quot;asymmetric&quot; error handling and for &quot;symmetric&quot; case-splitting in the<br>
first place, but we don&#39;t, we have Either. It has a Monad instance,<br>
and people use it. These ships have sailed. Consistency, simplicity,<br>
and the path of least resistance all point to lifting EitherT into<br>
transformers as it is. Bikeshedding the Best Possible Name for a new<br>
addition is one thing, but the potential benefit of renaming here<br>
would be so slight that it doesn&#39;t remotely justify breaking peoples&#39;<br>
existing code over it.<br>
<div class="HOEnZb"><div class="h5"><br>
On Wed, Aug 14, 2013 at 5:43 PM, Gabriel Gonzalez &lt;<a href="mailto:gabriel439@gmail.com">gabriel439@gmail.com</a>&gt; wrote:<br>
&gt; I echo Edward&#39;s sentiments.  If you disagree with Edward&#39;s design choices<br>
&gt; then you should vote with your code instead of your +1&#39;s by building and<br>
&gt; actively maintaining libraries that uphold your design principles.<br>
&gt;<br>
&gt; I see all these hypothetical arguments that `Either` might cause somebody to<br>
&gt; accidentally use its monad instance once, ever, but let&#39;s consult the facts:<br>
&gt;<br>
&gt; * Nobody here has even lifted a finger to write up a library with this<br>
&gt; hypothetical alternative to the `Either` without the `Monad` instance.  This<br>
&gt; signals to me that the people arguing for removing the `Monad` instance<br>
&gt; don&#39;t actually care about this as much about this as they say they do.<br>
&gt;<br>
&gt; * Nobody has ever come onto Haskell cafe, Stack Overflow, or /r/haskell and<br>
&gt; asked: &quot;Where can I find an `Either` without the `Monad` instance?&quot;  This<br>
&gt; signals to me that most Haskell programmers don&#39;t actually want this<br>
&gt; &quot;feature&quot; as much as you say they do.<br>
&gt;<br>
&gt; * Lots of Haskell programmers use Either and EitherT fluently for error<br>
&gt; handling without any confusion or programming mistakes.  My `errors` library<br>
&gt; is proof of that:<br>
&gt;<br>
&gt; <a href="http://packdeps.haskellers.com/reverse/errors" target="_blank">http://packdeps.haskellers.com/reverse/errors</a><br>
&gt;<br>
&gt; The reason Edward&#39;s libraries are popular and so widely used is because they<br>
&gt; solve an *actual* need, not a hypothetical need.<br>
&gt;<br>
&gt;<br>
&gt; On 08/14/2013 07:51 AM, Edward Kmett wrote:<br>
&gt;<br>
&gt; Like Maybe, Either has perfectly unambiguous semantics as a Monad as well.<br>
&gt;<br>
&gt; It is only when you muddle the waters with this fail nonsense that you need<br>
&gt; to choose between the Either monad and the Error monad. Error and Either<br>
&gt; would be indistinguishable otherwise.<br>
&gt;<br>
&gt; Re: unfair. I tried to take the sting out of it with a &quot;;)&quot; as I was really<br>
&gt; just trying to use it to indicate that the &#39;consistency with the rest of<br>
&gt; transformers&#39; ship had sailed given that MaybeT exists and is within<br>
&gt; transformers.<br>
&gt;<br>
&gt; I was trying to fire off one last shot across the bow that in the big 2.0<br>
&gt; switch there was a move to make &quot;State s&quot; be &quot;StateT s Identity&quot; that was<br>
&gt; mostly argued for code reuse and simplification reasons, that it cut code<br>
&gt; duplication by a factor of 2 in the body of transformers and the mtl and<br>
&gt; reduced the chance for human error.<br>
&gt;<br>
&gt; The fact that State s = StateT s Identity rather than merely being<br>
&gt; isomorphic seems to me to be an emergent property of this change, not its<br>
&gt; purpose.<br>
&gt;<br>
&gt; Ultimately, transformers is Ross&#39;s package, and the while maintainers can<br>
&gt; poll and ask questions of the community and take the temperature of the room<br>
&gt; it is fully his decision about how to move forward. Whatever he decides<br>
&gt; goes.<br>
&gt;<br>
&gt; I&#39;m just vociferously advocating for the least painful transition for me<br>
&gt; personally and tend to favor the &quot;don&#39;t rebikeshed&quot; solution over making<br>
&gt; changes for cosmetic reasons, because every single one of these &quot;lets<br>
&gt; standardize something from one of my packages but randomly rename it&quot;<br>
&gt; proposals induces a lot of accumulated work for me.<br>
&gt;<br>
&gt; I have come somewhat to dread the inevitable discussion when someone pops up<br>
&gt; on the mailing list here asking to standardize something from one of my<br>
&gt; packages. It seems it inevitably loses features, gets bikeshedded or<br>
&gt; otherwise broken in such a way that creates work for me and others. I still<br>
&gt; want to help with getting things out to a larger audience, but I prefer to<br>
&gt; do so in a way that doesn&#39;t break code gratuitously, or worse force users<br>
&gt; into a choice between the old and the new. However, that is wandering quite<br>
&gt; a bit off topic.<br>
&gt;<br>
&gt; -Edward<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Wed, Aug 14, 2013 at 3:42 AM, Daniel Trstenjak<br>
&gt; &lt;<a href="mailto:daniel.trstenjak@gmail.com">daniel.trstenjak@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Aug 13, 2013 at 06:57:22PM -0400, Edward A Kmett wrote:<br>
&gt;&gt; &gt; I look forward to finding out the new name for MaybeT then. ;)<br>
&gt;&gt;<br>
&gt;&gt; That&#39;s a bit unfair, because the Maybe data type has a clear meaning<br>
&gt;&gt; which also holds for its Monad instance.<br>
&gt;&gt;<br>
&gt;&gt; That&#39;s not the case for Either. The Either data type doesn&#39;t propose<br>
&gt;&gt; a special meaning to the &#39;Left&#39; or &#39;Right&#39; case, but the Monad<br>
&gt;&gt; instance of Either does.<br>
&gt;&gt;<br>
&gt;&gt; Isn&#39;t just having a discussion about such a contradiction at the end<br>
&gt;&gt; the reason why Haskell is the language it is?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Greetings,<br>
&gt;&gt; Daniel<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Libraries mailing list<br>
&gt;&gt; <a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
&gt;&gt; <a href="http://www.haskell.org/mailman/listinfo/libraries" target="_blank">http://www.haskell.org/mailman/listinfo/libraries</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Libraries mailing list<br>
&gt; <a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
&gt; <a href="http://www.haskell.org/mailman/listinfo/libraries" target="_blank">http://www.haskell.org/mailman/listinfo/libraries</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Libraries mailing list<br>
&gt; <a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
&gt; <a href="http://www.haskell.org/mailman/listinfo/libraries" target="_blank">http://www.haskell.org/mailman/listinfo/libraries</a><br>
&gt;<br>
<br>
<br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
Your ship was destroyed in a monadic eruption.<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/libraries" target="_blank">http://www.haskell.org/mailman/listinfo/libraries</a><br>
</div></div></blockquote></div><br></div></div></div></div></div></div>