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

Reply via email to