Back in October'06 Carlos Pita sent a message to this list:
Currently I'm trying to grasp haskell exception handling and although
I find it mostly clear I'm a bit confused regarding the lack of a
throwDynIO action "paralelling" throwIO, as there are dynamic variants
for the other throw functions:
throwDyn - throw
throwDynTo - throwTo
I understand that the same effect could be conjured up by
throwIO (DynException (...)))
magic. But the lack of symmetry still disturbes me. Am I missing something?
As far as I can tell, his question was left unanswered. As another
Haskell newcomer (crossing over from the OCaml world), I found the
absence of throwDynIO weird as well - as far as I understand things,
throwing an error in the IO monad seems like a safer thing to do (as I'd
know precisely when to expect it to be raised) than throwing it from a
pure code and then relying on the "imprecise exceptions" mechanism to
get it right.
Looking at the ghc-6.8.2/libraries/base/Control/Exception.hs in the GHC
source code, I see the following definitions:
throw = unsafePerformIO . throwIO
throwDyn exception = throw (DynException (toDyn exception))
so I guess I can get define throwDynIO myself by "taking back" the
unsafePerformIO:
throwDynIO exception = throwIO (DynException (toDyn exception))
but I am still wondering whether the library is simply incomplete here,
or whether there is some reason for not defining/using throwDynIO.
Thanks in advance for any clarifications!
Aleksey
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe