【发布时间】:2010-09-25 15:23:49
【问题描述】:
类似
addList :: [int] -> int
addList = foldl1 (+)
为什么会这样?咖喱部分。为什么没有变量?
【问题讨论】:
-
@Joren:实际上,通过高阶函数。 OP 询问了部分应用程序,现在询问了折叠;)@Matt:我见过的大多数体面的 Haskell 教程确实解释了这一点,尽管有时不是立即。如果您的根本无法解释,您可能想要切换。
-
当你有模式匹配时我明白了。像 (((f 6) 7) 8) 返回 f 6,新参数为 7,然后为 8 做同样的事情。在这种情况下,说 addList [1,2,3,4] 返回,但我只是不知道如何fold1 得到那个列表。比如haskell是怎么知道的?我知道这与咖喱有关。
-
Sepp2k 的解释准确而简单。 haskell.org/haskellwiki/Currying有更正式的解释。
-
@delnan:好吧,马特问“为什么会这样”。我的猜测是“this”指的是“addList”,就像“为什么函数 addList 工作”一样。我同意将其解释为“为什么这个定义有效”更有意义。下一次,我只是要求澄清。
标签: haskell currying partial-application