Proposal to deprecate and then drop fromJust

Oliver Charles ollie at ocharles.org.uk
Tue Feb 24 10:06:27 UTC 2015


Everyone is talking about wanting a function to do this, but I'd argue an
inline case statement is better. Whenever you have

  f (fromJust x)

You can write

  f (case x of Just x' -> x')

Its a little more typing, but the big wins are:

- a warning that you're relying on partiality
- a useful error message if your assumption fails, giving you the line
number of the pattern match failure.

These are both superior to fromJust, so I can see no reason for it to
exist. If its useful in GHCI then add it to your .ghci. If you think
everyone should have it by default, then maybe we should have a
conversation about a "GHCI prelude".

+1, death to hidden partiality!

ocharles
On 24 Feb 2015 09:36, "Jon Fairbairn" <jon.fairbairn at cl.cam.ac.uk> wrote:

> Andrew Gibiansky <andrew.gibiansky at gmail.com> writes:
>
> > I am strongly against this, as sometimes you *do* want to use fromJust.
> For
> > example:
>
> What people want isn’t necessarily good language design.
>
> > 1. Quick and dirty scripting/examples where you don't care about
> > error-proofing your work and just want it to be done quickly. In that
> > context, fromJust is a good function.
>
> but you can have your own library that contains “fromMaybe
> undefined” as well as all the other quick and dirty functions
> useful for one-off programmes.
>
> > 2. You know by construction that it is a Just constructor. This is
> usually
> > not a good design, but sometimes it's useful. Writing an (error
> "fromJust")
> > is possible, but annoying.
>
> Programming languages accrue all sorts of bad practices from
> that sort of argument. Good Haskell programming involves making
> the type system move as many errors as possible from run time to
> compile time.
>
> > (That said, I do wish that `head` and `tail` were replaced by `headMay`
> and
> > `tailMay`, which you could then use with `fromJust` if you wanted to. But
> > that's another discussion for adding things from `safe` to `base`,
> > unrelated...)
>
> I’m with you on that.
>
> So I’m +1 on the proposal.
>
> --
> Jón Fairbairn                                 Jon.Fairbairn at cl.cam.ac.uk
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20150224/2ad6f650/attachment.html>


More information about the Libraries mailing list