Hi,

I just feel it is not comfortable to deal with exceptions
only within IO monad, so I defined

> tryArith :: a -> Either ArithException a
> tryArith = unsafePerformIO . try . evaluate

and it works quite good as

> map (tryArith . (div 5)) [2,1,0,5]

evaluates to

> [Right 2,Right 5,Left divide by zero,Right 1]

However, I guess unsafePerformIO definitely has a reason for
its name.  As I read through the document in
System.IO.Unsafe, I can't convince myself whether the use of
'tryArith' is indeed safe or unsafe.

I know there have been a lot of discussion around
unsafePerformIO, but I still can't figure it out by myself.
Can someone share some thoughts on this particular use of
unsafePerformIO?  Is it safe or not?  And why?

Thanks,
Xiao-Yong
-- 
    c/*    __o/*
    <\     * (__
    */\      <
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to