gpt4 book ai didi

haskell - 是否可以写下一个共享修复点免费?

转载 作者:行者123 更新时间:2023-12-04 13:34:56 26 4
gpt4 key购买 nike

编辑:fix在这篇文章中代表一般用 Haskell 写下的定点组合,而不仅仅是 Data.Function.fix .

众所周知fix可能是非共享的,因为 GHC 并不总是消除公共(public)子表达式:

Long story short: "If you care about CSE, do it by hand."

fix使用 S 可以很容易地写下 point-free -组合器:

fix = ($) <*> fix

如果我们返回积分,我们将得到众所周知的非共享实现:

fix f = ($) <*> fix $ f = ($) f (fix f) = f (fix f)

我相信,在这种情况下,CSE 不能由 GHC 完成 fix f取决于 f在第一个参数中的懒惰。事实上,作为 Daniel Wagner建议,请查看以下代码段:

let ones = fix (1:) in (ones !! 10000, ones !! 0)

fix f = let x = f x in x它用完了 ~54,5 kB,而使用 fix = ($) <*> fix - ~615 kB。

能不能免写个分享点fix以某种方式下降?

最佳答案

没有。 let 是 GHC 分享东西的提示,let 需要一个点。

关于haskell - 是否可以写下一个共享修复点免费?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62752813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com