Haskell Text.Json 包可以读取但不能写入 Rational?
当我尝试使用浮点数解码 JSON 文件时,Text.JSON 包将数字作为 JSRational 提供。因此,我可以在 JSRational 上执行 readJSON。但是,我不会写有理数!这是故意的吗?
When I try to decode a JSON file with a floating point number, the Text.JSON package gives me the number as a JSRational. So, I can do a readJSON on a JSRational. However, I can't write rational numbers! Is this on purpose?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题的背景是 JSON 合并了浮点类型和整数类型——它们不通过 JSON 格式的类型标签来区分。因此,我们在底层通过 Rational 表示 JSON 中的所有数字类型。
为 Double、Int 等提供了转换为 JSON 类型的实例,但没有为 Rational 提供——尽管实际上没有充分的理由,因为实例很简单:
The background to the problem is that JSON conflates floating point and integer types -- they're not distinguished via a type tag in the JSON format. So we represent all numeric types in JSON via Rationals, under the hood.
Instances to convert into the JSON type are provided for Double, Int etc, but not for Rational -- though there is actually no good reason for this, as the instance is trivial: