Javascript 为什么Ramda源代码有不止一个curry函数,Redux也有?
中有Javascript 为什么Ramda源代码有不止一个curry函数,Redux也有?,javascript,typescript,redux,ramda.js,Javascript,Typescript,Redux,Ramda.js,中有\u curry1\u curry2\u curry3\u curryN功能 这种模式也出现在中 我想知道为什么他们使用这种模式,而不是在所有情况下只使用通用函数 这种模式能提高性能吗?这是一个很好的问题,通过谷歌搜索我发现了这个问题。引用 我们可以考虑直接暴露咖喱2和咖喱3。最大的 问题将出现在文档中。我们怎么解释呢 咖喱和咖喱之间的折衷,咖喱效率较低,但保留了 上下文并传递所有提供的参数,以及curry2/curry3, 它可以运行得更快,但会丢失调用上下文和 忽略提供的额外参数。但我看
\u curry1
\u curry2
\u curry3
\u curryN
功能
这种模式也出现在中
我想知道为什么他们使用这种模式,而不是在所有情况下只使用通用函数
这种模式能提高性能吗?这是一个很好的问题,通过谷歌搜索我发现了这个问题。引用 我们可以考虑直接暴露咖喱2和咖喱3。最大的 问题将出现在文档中。我们怎么解释呢 咖喱和咖喱之间的折衷,咖喱效率较低,但保留了 上下文并传递所有提供的参数,以及curry2/curry3, 它可以运行得更快,但会丢失调用上下文和 忽略提供的额外参数。但我看不出有什么真正的问题 实际上已经公开了这些功能
因此看来,
\u curry1
,\u curry2
,\u curry3
不能完全用\u curryN
替换。除了Kousha的正确答案之外,我想补充一点,\u curry2
-前缀函数是Ramda的内部结构,不会暴露在任何地方
Ramda(免责声明:我是它的创始人和主要作者之一)公开了curryN
和一个有用的修饰语,curry
。其他仅在内部使用。它们会带来一些额外的负担,尤其是帮助占位符。但最重要的是,它们并不是成熟的拉姆达·库里职能部门,只是尚未准备好暴露的内部助手。我们可以把它们修好,让它们成为现实,这就是引用评论的要点,但我们从来没有费心过。这可能会带来一些性能上的好处,这可能就是Redux这样做的原因,但我们还没有发现Curry在性能上有巨大的影响,至少在我们编写这些助手之后没有
在一个更为严格的库(如saccession)中,它们是唯一允许的API类型,因为输入不允许是可变的。不过,Ramda在支持可变函数方面做了相当多的工作。拉姆达选择了不走那条路