3

浮動小数点数を含む JSON ファイルをデコードしようとすると、Text.JSON パッケージが数値を JSRational として提供します。したがって、JSRational で readJSON を実行できます。しかし、有理数が書けない!これはわざとですか?

4

1 に答える 1

6

この問題の背景は、JSONが浮動小数点型と整数型を圧縮することです。これらはJSON形式の型タグでは区別されません。そのため、内部でRationalsを介してJSONですべての数値型を表します。

JSON型に変換するインスタンスは、Double、Intなどに提供されますが、Rationalには提供されません。ただし、インスタンスは些細なものであるため、実際にはこれには正当な理由はありません。

instance JSON Rational where
    showJSON r = JSRational True r 
    readJSON (JSRational _ r) = return r
于 2010-08-07T00:25:57.963 に答える