On Mon, 14 Jun 2004, Keith Wansbrough wrote: (snip)
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. (snip)
We've already had these issues raised on haskell-cafe when I've been wanting non-monadic synchronous exceptions. (-: The answer is that you evaluate all branches sufficiently to discover all the exceptions raised, and maybe have an ordering on exceptions such that you can return "answers" deterministically (as a list of ones that occurred or something). I'll be happy to follow discussion of this on haskell-cafe but will be reluctant to say much that I've already said (e.g. in December 2002's "Error Handling") for fear of boring everyone silly. -- Mark