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