Prelude.catch vs. Exception.catch
Ashley Yakeley
ashley@semantic.org
Tue, 14 May 2002 03:23:10 -0700
At 2002-05-14 02:58, Simon Marlow wrote:
>I must admit I can't think of any compelling reasons for the change,
>other than the fact that this is functionality that we don't have at the
>moment, and therefore might be useful. Opinions?
I need a function that does this:
evaluate :: a -> IO a
evaluate _|_ = fail something
evaluate a = return a
The idea is that you can take something that might be bottom and safely
handle it in the IO monad, with the "bottomness" gone. This is what
Exception.evaluate currently does, and I think that's correct.
I think the behaviour of Exception.catch is wrong. I think it should
behave like this:
catch _|_ cc = _|_
catch (failure ex) cc = cc ex
catch (success a) cc = success a
...whereas it actually behaves like this:
catch _|_ cc = cc something
catch (failure ex) cc = cc ex
catch (success a) cc = success a
--
Ashley Yakeley, Seattle WA