当我尝试使用浮点数解码 JSON 文件时,Text.JSON 包将数字作为 JSRational 提供给我。所以,我可以在 JSRational 上做一个 readJSON。但是,我不会写有理数!这是故意的吗?
问问题
205 次
1 回答
6
问题的背景是 JSON 将浮点类型和整数类型混为一谈——它们不是通过 JSON 格式的类型标签来区分的。因此,我们在底层通过 Rationals 表示 JSON 中的所有数字类型。
为 Double、Int 等提供了转换为 JSON 类型的实例,但没有为 Rational 提供——尽管实际上没有充分的理由这样做,因为实例是微不足道的:
instance JSON Rational where
showJSON r = JSRational True r
readJSON (JSRational _ r) = return r
于 2010-08-07T00:25:57.963 回答