【发布时间】:2013-02-11 14:40:34
【问题描述】:
考虑这个函数:
f as = if length as > 100 then length as else 100
由于函数是纯函数,很明显两个调用的长度相同。我的问题是 Haskell 优化器是否将上面的代码变成了下面的等效代码?
f as =
let l = length as
in if l > 100 then l else 100
如果是这样,那么哪个级别设置启用了它?如果没有,那为什么?在这种情况下,内存浪费不可能是this answer 中解释的原因,因为一旦函数执行完成,引入的变量就会被释放。
请注意,由于本地范围,这不是 this question 的重复,因此它可能会得到完全不同的答案。
【问题讨论】:
标签: haskell optimization compiler-construction memoization