ace*_*ceo 3 floating-point json haskell integer rational-numbers
当我尝试使用浮点数解码JSON文件时,Text.JSON包将数字作为JSRational.所以,我可以在JSRational上做一个readJSON.但是,我不能写有理数!这是故意的吗?
该问题的背景是JSON混淆了浮点和整数类型 - 它们不是通过JSON格式的类型标记来区分的.因此,我们通过Rationals代表JSON中的所有数字类型.
转换为JSON类型的实例是为Double,Int等提供的,但不是为Rational提供的 - 尽管实际上没有充分的理由,因为实例很简单:
instance JSON Rational where
showJSON r = JSRational True r
readJSON (JSRational _ r) = return r
Run Code Online (Sandbox Code Playgroud)