Proposal to deprecate and then drop fromJust
Simon Peyton Jones
simonpj at microsoft.com
Tue Feb 24 16:45:07 UTC 2015
We are working on detecting partiality in pattern matching right now
S
| -----Original Message-----
| From: Libraries [mailto:libraries-bounces at haskell.org] On Behalf Of
| Richard Eisenberg
| Sent: 24 February 2015 15:02
| To: Herbert Valerio Riedel
| Cc: libraries at haskell.org; Joachim Breitner
| Subject: Re: Proposal to deprecate and then drop fromJust
|
| I've been wanting to get warnings on partial functions (and partial
| record accessors, while we're at it!) for some time.
|
| And, I think it would be quite easy to have GHC infer partiality. As
| far as I can see, partiality can come from only two places: the use of
| a partial function, and an incomplete pattern match. (I'm ignoring
| nontermination here, which I think is best considered separately.)
| Before getting this into GHC, though, we'd need to make sure the
| incomplete-pattern-match checker is up for it (see #3927), but that
| work is being done right now. And we'd definitely need a way for users
| to declare "This function is total! Really!"
|
| I like the idea of user-specified warning categories, but I think
| partiality is easy enough for GHC to infer that it should be built in.
|
| +1 on partiality warnings, preferably inferred
| +0.8 on user-specified warning classes (but inferred partiality is my
| +preference)
|
| -0.9 on just attaching a one-off warning to fromJust (we can do so
| much better)
| -1 on removing fromJust (I use it myself [don't hate me for it], and
| the GHC codebase uses `expectJust`, which takes a string for better
| error messages, 54 times by my count)
|
| Richard
|
| On Feb 24, 2015, at 7:28 AM, Herbert Valerio Riedel <hvr at gnu.org>
| wrote:
|
| > On 2015-02-24 at 12:32:14 +0100, Michael Snoyman wrote:
| >> We could also automatically detect basic partiality, like
| incomplete
| >> pattern matches, and add partiality warnings. Depending on how much
| >> work that is, it may be easier than trying to mark up all of base
| >> correctly.
| >
| > You'd still need a way to greenlight false positives. I.e. cases
| where
| > the code *seems* to have unhandled pattern matches which can't
| happen,
| > but which GHC can't prove them not to be unhandled...
| > _______________________________________________
| > Libraries mailing list
| > Libraries at haskell.org
| > http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
|
| _______________________________________________
| Libraries mailing list
| Libraries at haskell.org
| http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
More information about the Libraries
mailing list