Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json包可以读取但不能写入理性?_Json_Haskell_Floating Point_Integer_Rational Numbers - Fatal编程技术网

Json包可以读取但不能写入理性?

Json包可以读取但不能写入理性?,json,haskell,floating-point,integer,rational-numbers,Json,Haskell,Floating Point,Integer,Rational Numbers,当我尝试用一个浮点数来解码JSON文件时,Text.JSON包将该数字作为JSRational提供给我。因此,我可以在JSRational上执行readJSON。然而,我不会写有理数!这是故意的吗?问题的背景是JSON将浮点类型和整数类型混为一谈——它们不是通过JSON格式的类型标记来区分的。因此,我们在JSON中通过有理数表示所有数值类型 要转换为JSON类型的实例是为Double、Int等提供的,但不是为Rational提供的——尽管实际上没有很好的理由这样做,因为该实例很小: instan

当我尝试用一个浮点数来解码JSON文件时,Text.JSON包将该数字作为JSRational提供给我。因此,我可以在JSRational上执行readJSON。然而,我不会写有理数!这是故意的吗?

问题的背景是JSON将浮点类型和整数类型混为一谈——它们不是通过JSON格式的类型标记来区分的。因此,我们在JSON中通过有理数表示所有数值类型

要转换为JSON类型的实例是为Double、Int等提供的,但不是为Rational提供的——尽管实际上没有很好的理由这样做,因为该实例很小:

instance JSON Rational where
    showJSON r = JSRational True r 
    readJSON (JSRational _ r) = return r