Tôi đang cố gắng loại trừ ngoại lệ do có hành động ([1,2] !! 3). Tôi không thể.Haskell. Xử lý ngoại lệ không IO
Tôi đã cố gắng
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)
trong cả tôi nhận được Ngoại lệ: Prelude (!!). Chỉ số quá lớn *
Có thể không? Có lẽ tôi đang sử dụng Có lẽ cách tiếp cận.
Cảm ơn bạn đã trợ giúp.
" đánh giá 'return' cũng phải đánh giá chỉ mục danh sách" - đây là cách phân tích tốt để suy nghĩ về độ nghiêm ngặt. +1 – luqui
đôi khi tôi quên đi sự lười biếng của haskell – Anton