
I am strongly against this, as sometimes you *do* want to use fromJust. For
example:
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.
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.
IMHO removing fromJust would be a bad idea; although it may be overused
there are certainly times and places where it is useful. In addition, it
seems like the *real* issue is that "error" needs to give better stack
traces, so that you do not need to do as Erik suggests and write "
fromMaybe (error "Module.functionName : unexpected Nothing") x". But I
think that by 7.12 or 7.14 this will happen, as there is work being done in
this direction. It may be a good idea to change the documentation of
`fromJust` to say something like "please never use this unless you really
know you want to".
(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...)
Strong -1.
On Mon, Feb 23, 2015 at 9:51 PM, Chris Allen
I'm strongly in favor of removing this so as not to confuse new people with partial functions that have impossible type signatures.
+1
On 02/23/2015 11:49 PM, Ivan Lazar Miljenovic wrote:
On 24 February 2015 at 16:42, Erik de Castro Lopo
wrote: Hi all,
We currently have in the Data.Maybe module from base:
fromJust :: Maybe a -> a
which newbies often find using hoogle or other search tools and is a huge trap. *Every* usage of the above can be replaced by using
fromMaybe :: a -> Maybe a -> a
which forces the user to provide a default value for the case where the Maybe a is a Nothing.
The idea would be to deprecate fromMaybe for 7.12 and remove it completely later.
Comments?
I've used fromJust in the past when I knew the value would be Just by construction.
That said, I could always have written my own fromJust function with a custom error message, and did switch some of them to direct pattern matches (so that at least the error message said *where* the error occurred).
So I'm undecided; maybe (no pun intended!) -0.1.
Erik
-- ---------------------------------------------------------------------- Erik de Castro Lopo http://www.mega-nerd.com/ _______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries