gpt4 book ai didi

javascript - 分支是柯里化(Currying)的必要特征吗?

转载 作者:行者123 更新时间:2023-11-30 12:29:37 24 4
gpt4 key购买 nike

在编写 curry 函数的实现时,是否需要能够分支?

Javascript 中的用法示例:

var foo = function (a, b) { console.log(a, b); },
x = curry(foo),
y = x('bar'); // An example of branching

x('baz'); // -> 'bar baz'
y('qux'); // - > 'bar qux'

这里的示例显示我们第一次使用值 bar 调用柯里化(Currying)函数并将结果函数存储在变量 y 中。

那么我的问题是:我们是否能够独立于应用于 x 的进一步操作(在这种情况下传递 baz 作为下一个参数)。

如果你不确定柯里化(Currying)是什么,维基百科是这样说的:

In mathematics and computer science, currying is the technique of translating the evaluation of a function that takes multiple arguments (or a tuple of arguments) into evaluating a sequence of functions, each with a single argument (partial application).

http://en.wikipedia.org/wiki/Currying

更新:

提出这个问题的另一种方式是:一个柯里化(Currying)函数应该简单地保持它的当前状态并且除了应用最后一个参数时不返回任何值,还是应该每次调用都返回一个封装了所有先前参数的新函数应用参数?

最佳答案

柯里化(Currying)通常意味着调用参数少于预期数量的函数将返回一个预期剩余缺失参数的函数。

它不应该在函数对象上累积状态...

f = curry(function(x, y, z) { return x+y+z; });

g = f(1) // --> <func>
h = g(2) // --> <func>
h(3) // --> 6 (computed from 1+2+3)
g(10, 20) // --> 31 (computed from 1+10+20)

柯里化(Currying)甚至用于您实际上没有可变状态概念的纯函数式语言。

关于javascript - 分支是柯里化(Currying)的必要特征吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28169455/

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