aha*_*ala 3 optimization haskell compilation
这与流行的问题有关,为什么GCC不优化a*a*a*a*a*a到(a*a*a)*(a*a*a)?
对于像Haskell这样的惰性函数式编程语言,编译器将如何处理这种情况?
这不是strict和lazy之间的区别,而是浮点数的语义的乘积.
Haskell Double与C double或Java或大多数其他语言具有或多或少相同的语义.非常聪明和合格的人已经遇到并决定用正确的十进制数表示的正确方法是二进制的,我们或多或少坚持它.
所以答案是否定的,因为舍入与评估顺序无关.
虽然在这里我们似乎在谈论GHC用于添加浮点数的primop,但请记住,+它在Haskell 中是可扩展的,只是一个普通的函数.Num类型类的新实例没有义务提供关联操作.
举个简单的例子,我有一个库让用户在Haskell DSL中构建C AST.为了方便添加内容,我Num在库中添加了一个实例.AST为(a + b) + c和a + (b + c)不一样!他们以不同的方式"倾斜".如果GHC开始随意移动我的parens我肯定会注意到并且生气.
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |