Ant*_*ton 7 haskell exception-handling
我试图通过动作捕捉异常([1,2] !! 3).我不能.
我在努力
let a = [1,2]
handle  (\(e :: SomeException) -> print "err" >> return 1) (return $ a !! 3)Control.Exception.catch (return $ a !! 3) (\(e::SomeException) -> print "err" >> return 1)我得到了 例外:序曲.(!!):索引太大*
可能吗?可能我会使用Maybe方法.
感谢帮助.
惰性和异常,如懒惰和平行,以微妙的方式相互作用!
将return数组访问包装在thunk中,以便返回未评估的值,从而在处理程序之外评估异常.
解决方案是确保评估return还必须评估列表索引.这可以通过以下方式完成$!:
handle((e :: SomeException) - > print"err">> return 1)(返回$!a !! 3)