首页 > 解决方案 > 如何将 typeclass 放入记录中?

问题描述

在清理 Haskell 时,我想解析一些临时数据。

我发现可以解析数字的小数。

但是我不能Integral a轻易地将之类的东西放入记录中。将此类数据放入具有命名字段的结构中的推荐方法是什么?

编辑:有很多“不要”和“你为什么要这样做”的答案/评论。所以,让我重申一下这个问题:给定decimal :: Integral a => Parser a,并且我可以a通过运行解析器得到,我如何将它a放入记录中?

标签: haskell

解决方案


如果只有一种数字类型可以以某种方式存储整数浮点数......

x :: [Double]
x = [10, 3.1415]

好吧,你会看那个!

简而言之,除非您非常疯狂或解析数十亿行临时数据,而浮点性能成为关键问题,否则您应该只使用Double. 该函数fromIntegral可以将结果从转换decimal为 a Double,但由于您希望能够同时解析10and 3.1415,因此您无论如何都不想使用decimal。使用double.

在有人说傻话之前,整Double数值的计算总是准确的,除非你需要存储一个绝对值大于2^53 = 9007199254740992 的数字。


推荐阅读