[Haskell-cafe] Use unsafePerformIO to catch Exception?

Duncan Coutts duncan.coutts at worc.ox.ac.uk
Wed Mar 25 21:40:14 EDT 2009

On Wed, 2009-03-25 at 18:14 +0100, Benja Fallenstein wrote:
> On Wed, Mar 25, 2009 at 3:52 AM, Duncan Coutts

> > Of course your tryArith only tests for certain kinds of _|_ value, but
> > in principle the problem is the same.
> That's not *quite* how the semantics of Haskell exceptions are
> defined, actually, unless I'm misunderstanding something or the
> thinking about it has changed since the original paper on the topic:

Yep, that's the semantics I've been working from too.

I was not being precise when I said "tests for _|_". As you point out,
the semantics of imprecise exceptions distinguishes exceptions from
bottom, however pure code cannot make that distinction and so that's why
I was lumping them together and saying that tryArith tests for certain
kinds of _|_ value.

> tryArith is still noncontinuous, though, and nondeterministic, too. Consider:

Those are nice examples. Thanks for that. I was too tired to come up
with any :-)

Anyway, I hope this is enough to dissuade people from using
unsafePerformIO to catch exceptions.


More information about the Haskell-Cafe mailing list