我在网上看到一个人的声明说“currying只是一个带有可选参数的奇特方式”。通过直觉,我觉得这个陈述是浅薄和错误的,但我不能真正指责它,可能是因为我对lambda演算没有足够的知识。
当我试图解释差异时,我的解释跨越段落,主要归结为“Currying具有函数声明的所有变体,参数数量较少作为类型。但是你不能将函数的所有组合与可选参数一样有效类型并在其他声明中使用它们,至少不会自动“。
我的方法一开始是否正确,更重要的是有更简单,更简洁的解释方法吗?
答案 0 :(得分:5)
它与可选的任何内容无关。
但是,不是定义一个带有两个参数的函数,而是定义一个只接受一个参数的函数,并返回一个接受另一个参数的函数。
最终结果是相同的(调用者最终提供两个参数),但是通过currying,你只能一次提供一个参数。