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