On 2004-11-23, Johannes Waldmann <[EMAIL PROTECTED]> wrote:
> in the following example, the handler won't catch the exception
> because of lazy evaluation. therefore, it's a different story
> than with exceptions in ML, Python, whatever strict language.
>
> main = do
> xs <- return [ 1, 2, error "throw" ]
> `catch` \ any -> do
> putStrLn "caught"
> return [ 4, 5, 6 ]
> print xs
That didn't quite compile as-is; I assume you ment:
main = do
xs <- return [ 1, 2, error "throw" ]
`catch` \ any -> do
putStrLn "caught"
return [ 4, 5, 6 ]
print xs
When run, I get: Fail: throw
In any case, in the more general case, I don't see a problem with that.
I get an exception when I try to use something. That's fine. In an
imperative program that solves the same problem the same way, you'd see
the exception at the same point.
_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell