gpt4 book ai didi

Haskell 中的函数应用

转载 作者:行者123 更新时间:2023-12-04 04:54:59 24 4
gpt4 key购买 nike

好的,这是漫长的一天,我的大脑可能无法在 Haskell 级别上运行,但我无法理解“Learn You a Haskell”中的一个例子。

该部分称为 $ 函数应用程序,并且有 $ 的示例可以定义:

($) :: (a -> b) -> a -> b
f $ x = f x

到目前为止,一切都清楚了。我理解本节中的所有示例,除了最后一个:
ghci> map ($ 3) [(4+), (10*), (^2), sqrt]
[7.0,30.0,9.0,1.7320508075688772]

这里我们映射 ($ 3)跨函数列表并获得将这些函数应用到 3 的结果.但这怎么可能?

从第一个代码片段可以清楚地看出,第一个参数是一个函数,我们甚至可以这样写:
*Main> ($) sqrt 4
2.0

现在 ($ 3)是函数 $ 的部分应用, 但是 3上功能的位置!所以 3应该是一个功能还是什么?

还有另一个谜团:到底是什么 (4+) ?我知道 (+4)是函数 + 的部分应用, 所以 (4+)应该是函数的部分应用 4 ?废话。什么样的技巧在这里起作用?

最佳答案

($ 3)(+ 4)不是部分应用程序 - 它们是运算符(operator)部分。部分应用程序看起来像 (($) 3)((+) 4) .
(? x) 形式的运算符部分(其中 ? 代表任意中缀运算符)绑定(bind)运算符的右操作数,即它等价于 \y -> y ? x .同样,运算符部分 (x ?)绑定(bind)左操作数,因此等价于部分应用。

关于Haskell 中的函数应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25727072/

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