<div dir="ltr"><br><br><div class="gmail_quote">On Thu, Apr 23, 2015 at 12:03 PM Yitzchak Gale <<a href="mailto:gale@sefer.org">gale@sefer.org</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I wrote:<br>
>> Package foo uploads a new version with a critical bug fix.<br>
>> As is often the case, this new version also supports updated<br>
>> dependencies, including exceptions. The new exceptions<br>
>> breaks the old SomeException type, so foo is forced to<br>
>> specify a lower bound that excludes the old exceptions.<br>
<br>
Michael Snoyman wrote:<br>
>> I'm not seeing a situation where an author couldn't easily<br>
>> be compatible with GHC <=7.8 by sticking to the<br>
>> old API?<br>
<br>
Felipe Lessa wrote:<br>
> I think Michael Gale<br>
<br>
heh<br>
<br>
> is thinking about an author that may end up using the new<br>
> SomeExceptionWithInfo constructor for some reason, thus<br>
> leaving older GHCs out of any new updates.<br>
<br>
Right, exactly what I was thinking. But perhaps<br>
Michael Sn. is correct that explicit use of a SomeException<br>
constructor is rare. (Which is what I think is what he means by<br>
"sticking to the old API".) If that is really true, then my objection<br>
is not valid.<br>
<br>
And I'm certainly strongly in favor of the goals of this<br>
proposal. So I'd be in favor even if *some* breakage<br>
results from it, as long as the overall deprecation curve<br>
isn't unreasonably steep.<br>
<br>
Thanks,<br>
Yitz<br><br></blockquote><div><br></div><div>Maybe we're on the same page, but just to be sure, I'd like to clarify: with Michael Sloan's proposal, you can still explicitly use the SomeException constructor. Under GHC <=7.10 it's just a normal data constructor. Under GHC >=7.12 it would be this pattern synonym thing (I really haven't looked into the extension yet). Meaning that anything you could do with GHC 7.10 and earlier could still be done with 7.12 without any breakage.</div><div><br></div><div>Michael </div></div></div>