
dons:
dmhouse:
On 16/11/06, oleg@pobox.com
wrote: And if we are absolutely positive that the value is (Just x), we can always write maybe (assert False undefined) id v
It should be pointed out that Data.Maybe does export a less well-known function, fromMaybe:
fromMaybe z = maybe z id
This can be used to make the 'maybe X id' case a bit tidier (although technically it's not a save on characters).
How controversial would a proposal to {-# DEPRECATE fromJust #-} be, in favour of:
Just _ = x -- which will give you the precise line number
maybe (assert False)
maybe id
fromMaybe
It seems to me this is one cause of mysterious newbie errors we could easily discourage, with little harm.
Btw, I'm not seriously suggesting removing it ;) It could be discouraged ever so slightly in the haddocks though. I'd encourage those worried about fromJust not to use it though, and perhaps try: import Debug.Trace.Location fromMaybe (failure assert "my just was nothing") (Nothing :: Maybe ()) $ ./a.out *** Exception: A.hs:5:34-39: my just was nothing instead of: fromJust (Nothing :: Maybe ()) $ ./a.out *** Exception: Maybe.fromJust: Nothing While Dana and Neil work on more tools for spotting these for us. -- Don