On the topic of exceptions in GHC,
Section 3.7 of the Haskell Libraries document (on the ghc website) says:
"Note: GHC currently doesn't generate the arithmetic or the async
exceptions."
This still seems to be the case in 4.09
Does it implement the "NonTermination" exception? Or perhaps what I should ask
is: does the "NonTermination" exception correspond to black hole detection.
If I have:
catchAll (show (let bot = bot in bot::Int)) (\x -> return (show x))
I don't catch the non-termination exception, however I expect that I ought
to.
Perhaps I am misinterpreting this aspect of the exception mechanism.
Also, approximately how far away is the generation of arithmetic and
asynchronous exceptions?
On a slightly different note I was quite surprised to find that
(1/0)::Float gave me back a value "Infinity" rather than causing
an exception to occur. I noticed in the "ArithException" data-type that there
is a constructor "DivideByZero". Is it expected that when arithmetic
exceptions are implemented (1/0)::Float will throw such an exception rather
than returning "Infinity"?
Thanks very much,
Bernie Pope.