Lambda起重是否必要?

时间:2019-05-20 06:34:07

标签: haskell compiler-optimization

许多函数式编程语言的编译器都有Lambda Lifting通过,我想知道,这是实现函数式编程语言的最佳方法吗?

让我们考虑以下示例:

foo :: Int -> Int -> Int
foo = \x -> \y -> x * x * x + y

main = print $ sum (map (foo 5) [0..100])

如果不使用lambda提升,我们只需要计算x * x * x 1次,但是如果使用lambda提升,我们将需要计算x * x * x 100次。

所以我想知道,即使在上述情况下,GHC是否也总是进行lambda提升?有必要吗?还是有其他替代的FP lang编译技术可以更好地处理上述情况?

0 个答案:

没有答案