3
当我尝试使用浮点数解码JSON文件时,Text.JSON包会将该数字作为JSRational提供给我。所以,我可以在JSRational上做一个readJSON。但是,我不能写出理性的数字!这是故意的吗?Haskell Text.Json包可以读取但不能写入Rational吗?
当我尝试使用浮点数解码JSON文件时,Text.JSON包会将该数字作为JSRational提供给我。所以,我可以在JSRational上做一个readJSON。但是,我不能写出理性的数字!这是故意的吗?Haskell Text.Json包可以读取但不能写入Rational吗?
问题的背景是JSON混合了浮点和整数类型 - 它们不通过JSON格式的类型标记进行区分。所以我们通过Rationals在JSON中表示所有的数字类型。提供
实例转换成JSON类型双,诠释等,而不是理性 - 尽管实际上没有很好的理由,作为实例很简单:
instance JSON Rational where
showJSON r = JSRational True r
readJSON (JSRational _ r) = return r