1
我有以下一段代碼似乎與GHC編譯後運行時一貫掛起(雖然沒有與-Werror
構建失敗)。Haskell掛在號碼轉換
import Data.Aeson
import Data.Scientific
import qualified Data.HashMap.Strict as S
myObj = Object $
S.fromList [("bla", Number $ pc * 100.0)]
where pc = 10/9
,並試圖訪問myObj
時,程序將被掛起。經過一番挖掘之後,似乎haskell在數字轉換方面遇到困難(儘管上面的代碼片段沒有警告或錯誤)。如果我將上面的9
更改爲10
,則它不會掛起。但我很好奇,爲什麼上面掛?
這是誠實的非常關心。在分子和分母來自用戶輸入的實際應用中,這種情況只會在一小部分請求中出現,這使得調試非常困難。看起來一般建議應該是不惜一切代價避免Data.Scientific,並且只在將數字轉換爲JSON時使用它。 – pretobomba