3
f :: Int -> IO (Either SomeException Int)
g = do
results <- mapM f [1,2,3]
let (errs, succs) = partitionEithers results
if null errs then return succs
else -- rethrow arbitrary exception
throwIO (fromJust . fromException $ head errs)
我本來期望g
重新拋出遇到任何異常,但編譯失敗與ambigous類型的變量。隨機噴灑存在量化助手並沒有幫助。
如何重新拋出我遇到的任意異常而不失去通用性?
確實。但是,現在我在捕獲異常時遇到了模棱兩可的錯誤:'tryJust(Just。toException)'抱怨'異常''e'沒有被修復......但它應該適用於所有'e's,不應該? – ron
哦,它只是修復'e'到'SomeException' .. ..這是非直觀的:) – ron