Keith Wansbrough wrote: > Read the paper _A Semantics for Imprecise Exceptions_. The > problem is that the evaluation order of Haskell would have to > be fixed for this not to lose referential transparency. What > is the value of > > catchExcept (show (makeExcept "E1" + makeExcept "E2")) > (\x -> x) > > ? Haskell wouldn't be "purely functional" any more.
As Graham Klyne indicated in a previous mail, in practice there are two ways of dealing with errors in purely functional code: - capture possible errors in the result type. This will probably force the use of a monad, with the subsequent sequencing of operation and coding style. - throw an exception, and hence be unable to recover from errors outside the IO monad. Both of these approaches seem fairly "invasive" in their effect on the code. Are people using haskell for real world tasks happy with having to choose from these? The former is more general, but any function that needs to be able to fail or propagate failure will end up being a do {} block. Tim _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell