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