【发布时间】:2012-02-15 16:36:31
【问题描述】:
我不明白这里发生了什么?有人可以解释一下这段代码吗? 这个函数是怎么计算长度的?
callength = foldr (\_ n -> 1 + n) 0
为什么它使用 lambda、下划线、下划线和 n 之间的空格以及右侧的零?
【问题讨论】:
-
我想你会在任何一本关于 Haskell 的书的第三章中找到这个问题的答案。这是一个非常基本的东西。
-
如果你不喜欢 lambda,你可以改用
foldr (((+1).).(flip const)) 0... -
您知道
foldr是什么以及它是如何工作的吗?好吧,无论如何,ehird 已经给出了相当详尽的解释。 Learn You a Haskell 强烈推荐作为一本“Haskell 入门”一书,解释 lambda、下划线、折叠、函数等。
标签: haskell higher-order-functions