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