<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Feb 24, 2015 at 7:42 AM, Erik de Castro Lopo wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">We currently have in the Data.Maybe module from base:<br>
<br>
     fromJust :: Maybe a -> a<br>
<br>
which newbies often find using hoogle or other search tools and is<br>
a huge trap. *Every* usage of the above can be replaced by using<br>
<br>
      fromMaybe :: a -> Maybe a -> a<br>
<br>
which forces the user to provide a default value for the case where<br>
the Maybe a is a Nothing.<br>
<br>
The idea would be to deprecate fromMaybe for 7.12 and remove it<br>
completely later.<br></blockquote><div><br>I'm in favor of removing partial functions from standard libraries because, no matter how convenient they might be in circumstances where they are “obviously” not partial, there will always be other cases where they shouldn't have been used in the first place.</div><div><br></div><div>Back when I was dabbling in Scala, I asked a question about why the Scala equivalent of `fromJust` was in the standard library [1]. One of the interesting but baffling responses was that Scala was a partial language so there *must* [2] be partial functions in the standard library. I suppose the same argument could be made about Haskell.</div><div><br></div><div>My thought is that partiality should be a last resort. It's already convenient enough to use `error` or `undefined`, and bottom should not be “hidden” in unexpected places but upfront and in my face.</div><div><br></div><div>Regards,</div><div>Sean</div><div><br></div><div>[1] <a href="http://thread.gmane.org/gmane.comp.lang.scala.user/29915">http://thread.gmane.org/gmane.comp.lang.scala.user/29915</a></div><div>[2] <a href="http://thread.gmane.org/gmane.comp.lang.scala.user/29915/focus=29980">http://thread.gmane.org/gmane.comp.lang.scala.user/29915/focus=29980</a></div></div></div></div>