3

当我尝试使用浮点数解码 JSON 文件时,Text.JSON 包将数字作为 JSRational 提供给我。所以,我可以在 JSRational 上做一个 readJSON。但是,我不会写有理数!这是故意的吗?

4

1 回答 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 回答