标签: haskell
我一直在尝试使用Vector库来查看流融合,这是一个非常令人印象深刻的优化。我很想知道创建自己的流融合库有多难?我只是想知道我是否需要做一些特殊事情,比如使用特定的pragma等。
答案 0 :(得分:0)
Fusion主要由您的编译器优化器在INLINE / INLINABLE和RULES编译指示的控制下完成。
(Hugs仍然保持着?我假设没有。)
Haskell并没有为这些pragma赋予任何特殊含义;但是Haskell编译器(GHC和JHC)都有,而且含义非常相似。
所以,从理论上讲,没有。 Haskell语言不足以指示何时应该发生融合。但是,在实践中,是的。使用INLINE / INLINABLE和RULES编译指示将导致两个活动的Haskell编译器在优化期间执行融合。