gpt4 book ai didi

Haskell - 柯里化(Currying)?需要进一步解释

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

所以像

addList :: [int] -> int
addList = foldl1 (+)

为什么这行得通? curry 部分。为什么没有变量?

最佳答案

如果你定义一个像 f x y = bla 这样的函数, 这与 f x = \y -> bla 相同, 与 f = \x -> (\y -> bla) 相同.换句话说f是一个接受一个参数的函数,x , 并返回另一个接受一个参数的函数 y ,然后返回实际结果。这被称为柯里化(Currying)。

类似地,当您执行 f x y , 同 (f x) y . IE。您正在调用函数 f带有参数 x .这将返回另一个函数,您将其应用于参数 y .

所以换句话说,当你做 addList xs = foldl1 (+) xs ,您首先调用foldl1 (+)然后返回另一个函数,您将其应用于 xs .所以由于 foldl1 (+) 返回的函数实际上和addList是一样的,您可以将其缩短为 addList = foldl1 (+) .

关于Haskell - 柯里化(Currying)?需要进一步解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3794371/

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