【发布时间】:2013-06-23 12:12:08
【问题描述】:
(n+1) 是什么意思?我知道两者都是递归 Haskell 函数,并且正在使用模式匹配。
我不明白它将如何匹配factorial (n+1) 以及factorial = 右上方的(n+1)。
对于drop 函数,为什么它是drop 0 xs = xs?那么drop (n+1) [] = []呢?
--Example 1
factorial 0 = 1
factorial (n+1) = (n+1) * factorial n
--Example 2
drop :: Int -> [a] -> [a]
drop 0 xs = xs
drop (n+1) [] = []
drop (n+1) (_:xs) = drop n xs
顺便说一句,我在编译时遇到错误。
- 代码编译失败
- 模式中的解析错误:n + 1
更新: 感谢您指出正确的术语。我找到了这个n+k patterns。 由于自 2010 年以来已删除 n+k 模式,我还在 how to enable this pattern 上发现了这个问题。
【问题讨论】:
-
现在我应该接受哪个答案?两者都很棒!
-
哪个对你帮助最大,或者如果你不能决定就不要接受。 sepp2k 和我都不会为 15 分哭泣。
-
两者... X_X 50% 与 50%。该死!
-
@DanielFischer,如果有正确的答案,我想接受一个是很好的stackoverflow礼仪。
标签: haskell syntax functional-programming