【发布时间】:2011-02-15 18:15:01
【问题描述】:
我在网上读到一个人的声明说“currying 只是一种具有可选参数的奇特方式”。凭直觉,我觉得这种说法肤浅且错误,但我无法真正指出它,可能是因为我对 lambda 演算的知识不够。
当我试图解释差异时,我的解释跨越了段落,主要归结为“Currying 是将函数声明的所有变体作为类型的参数数量较少。但是你不能将函数与可选参数的所有组合作为有效类型并在其他声明中使用它们,至少不会自动使用”。
我的方法一开始是正确的吗,更重要的是有没有更简单、更通俗易懂的方式来解释它?
【问题讨论】:
-
可选参数产生不同的结果。柯里化返回不同的函数。
-
可选参数的值必须在编译时知道?
-
@Skeptic:取决于语言。
-
@Skeptic:IIRC,VB6 的可选参数允许任何值。
-
以防万一,请参阅"Practical use of curried functions?"。那里有一个有用的链接。
标签: lambda functional-programming currying