首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >管道定义内部函数的原因

管道定义内部函数的原因
EN

Stack Overflow用户
提问于 2015-07-01 10:15:09
回答 1查看 146关注 0票数 6

我正在查看喉管库源代码,例如,在核心模块中,我不明白为什么作者会使用这样定义函数的模式,到处都是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
runEffect = go
  where
    go p = ...

或者:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pull = go
  where
    go a' = ...

或者:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
reflect = go
  where
    go p = ...

这是启用某些优化的一些技巧吗?我发现它很难看,如果这是一些优化技巧,我真的希望编译器能够这样做。但也许还有别的原因?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-01 10:33:00

GHC只会内联非递归函数,并且只有当它们从句法角度“完全应用”时(即在调用站点上,它们被应用于定义中显示在左侧的参数数量)。

在您发布的示例中没有参数,但是定义可能是递归的,不会内联。执行此转换可能允许定义内联和专门化(用于m的具体类型等)。在呼叫现场。

这是启用某些优化的一些技巧吗?我发现它很难看,如果这是一些优化技巧,我真的希望编译器能够这样做。

是啊,太差劲了。

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

https://stackoverflow.com/questions/31168743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文