考慮以下幾點:在GHCI爲什麼underconstrained類型有時會給運行時錯誤?
do putStr ""
return $ map read ["2"]
運行,這給
[*** Exception: Prelude.read: no parse
我期待一個 「ambigious類型變量」 編譯錯誤,而是這在運行時出現。爲什麼?
爲了便於比較,以下三個例子做給「曖昧類型變量」錯誤:
map read ["2"]
do putStr ""
return $ read "2"
do [1]
return $ map read ["2"]
順便說一句,這裏就是我遇到了這個原代碼。
readInts :: String -> IO [Integer]
readInts f = do s <- readFile f
return $ map read $ splitOneOf " \n" s
這已得到解決。我的原始代碼嘗試從列表末尾的「」中讀取。當我在GHCI中進行調查時,我因不同的原因收到了相同的例外情況。
Windows行結尾? ('\ r \ n') – 2012-12-15 23:47:38