首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GHC不执行两阶段局部应用内联。

GHC不执行两阶段局部应用内联。
EN

Stack Overflow用户
提问于 2013-02-07 10:31:20
回答 1查看 287关注 0票数 2

我的职责是:

代码语言:javascript
运行
复制
{-# INLINE f #-}
f x =
    \ y ->
        \z -> ...

它是这样定义的(参见关于技巧的GHC博士 ),因为我需要两个阶段的应用程序内联,例如。

代码语言:javascript
运行
复制
comp (f a) ...
...
comp pAppliedF b1 b2 ... =
    f'1 = pAppliedF b1 -- I need these 2 functions inlined
    f'2 = pAppliedF b2

然而,我获得了这样的Core

代码语言:javascript
运行
复制
fa = \ y z -> ...
...
-- `comp` is inlined
-- Even though there are happy partial applications:
let f'1 = fa smth1
    f'2 = fa smth2
in ...

怎么才能在这里战胜GHC?

更新

在现实世界中(呵呵):

  • f
  • comp,下面20行:f'2,实际上是用fixed-vector压缩的
  • 程序 (comp (f a)在那里), (和-fexpose-all-unfoldings),Core - $wa2在后面的fa
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-07 11:14:48

在where子句中为这些定义添加{-#内联f'1 #}和f'2。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14748900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档