20

因此,由于纯代码和非纯代码之间的明确区分,纯函数式语言具有自己的潜力类别。我已经看到了一些在 Haskell 中实现起来更简单的功能,例如Nested Data ParallelismStream Fusion

我的问题是,在可行性/简单性方面,Haskell 或多或少独特但尚未实施的其他改进/优化是什么?(我主要关心 GHC,但也喜欢听别人说)

4

3 回答 3

26

我希望在 GHC 中看到的一项优化是超级编译。不过,在 GHC 不久的将来,这似乎不太可能,因为它是整个程序的优化,而且 GHC 非常专注于一次模块编译。

基本上,超级编译是在编译时执行尽可能多的程序。它自然包含内联、森林砍伐、专业化和任何数量的其他技术。早期的实验结果很有希望,但这是一个非常昂贵的过程。很难看出它是一个实用的优化,但这个概念非常棒。

于 2011-01-18T08:04:57.283 回答
2

SPJ 在他关于模块化超级编译的论文中指出的另一个问题是将超级编译与拆箱相结合。在超编译程序中拆箱的可能性大大降低。与通过 GHC 严格分析器/拆箱器传递的未优化程序相比,这会导致性能下降。见http://research.microsoft.com/en-us/um/people/simonpj/papers/supercompilation/

于 2011-01-27T08:28:41.277 回答
1

另一种强大但“尚未准备好用于生产”的技术是worker-wrapper 转换

于 2011-01-27T09:53:25.920 回答