【发布时间】:2015-06-16 20:59:35
【问题描述】:
看来弗雷格可以评估
1/2
返回 Double 值 0.5。
文字1 的类型为Int。它似乎被提升为Double,这是Real 类中的一个类型,因此知道/ 运算符。这是怎么发生的?是使用 Haskell 方法用 fromInt 1 静默替换文字 1 还是发生了其他事情?如何选择Double 作为Real 的实例在此处使用?是否有像 Haskell 一样的“默认”实例类型列表?
【问题讨论】:
-
这是一个很好的问题,因为official language specification 没有提到数字文字的多态性。在 Haskell 中,文字的类型为
Num a => a,这允许它专门用于在该上下文中工作的任何数字类型,这可能是类似的类型魔法在这里发生,但我无法确定在我花了 5 分钟寻找它。