gpt4 book ai didi

haskell - `seq` 部分应用函数

转载 作者:行者123 更新时间:2023-12-03 14:29:31 25 4
gpt4 key购买 nike

可以说我有以下内容:

f :: a -> b -> c
g :: b -> c
g = f 10

现在让我们说 f实际上是:
f x y = f1 x + y

将:
g `seq` ...

实际评估 f1 10 ,所以稍后在运行时
g 9

它实际上只是一个简单的添加?

如果没有,有没有办法“评估”部分应用功能的一部分?

我正在寻找一种通用的解决方案,它不依赖于了解 fg工作。

最佳答案

不,不会,因为一般情况下,f 的右手边选择可能取决于 y .如果你想分享 f1 x 的结果在调用 g 之间, 你必须写 f像这样:

f x = let z = f1 x in \y -> z + y

当然,由于懒惰,这不会评估 f1 x直到第一次 g叫做。有 g `seq` ... f1 x 的力评估,你必须写:
f x = let z = f1 x in z `seq` (\y -> z + y)

关于haskell - `seq` 部分应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10170406/

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