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