gpt4 book ai didi

Haskell:带有两个参数的匿名函数

转载 作者:行者123 更新时间:2023-12-02 21:24:42 24 4
gpt4 key购买 nike

我有以下匿名函数:

(\x y -> y+y) (5*(7+20))

据我了解匿名函数,x 应该是 (5*(7+20)) 并且 y 没有给出(这就是它变得可疑的地方)。当我尝试执行该函数时,GHCI 告诉我返回值为

Integer -> Integer

很明显我的解释是错误的,我只是不明白为什么。谁能向我解释一下这里发生了什么?

最佳答案

请注意

\x y -> y+y

是语法糖

\x -> (\y -> y+y)

即您可能会说它是只有一个参数的函数,而不是说“两个参数的 lambda 函数”。返回类型恰好又是一个函数。

这个currying技术对于优秀的 Haskell 代码来说确实至关重要;部分应用使许多事情变得非常简洁,而又不牺牲可读性。例如,

GHCi> map (logBase 2) [1,2,4,8,16]
[0.0, 1.0, 2.0, 3.0, 4.0]

这里我使用了 logBase 作为单个参数 (2) 的函数,这给了我一个简单的数字→数字函数,可以映射到列表上。如果没有柯里化(Currying),我需要编写 map (\x -> logBase(2,x)) [1,2,4,8,16]

关于Haskell:带有两个参数的匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301307/

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