fibs :: [Int]
fibs = 0 : 1 : [ a + b | (a, b) <- zip fibs (tail fibs)]
这会生成斐波那契数列。
我理解 :
的 guard 的行为, zip
和tail
,但我不明白<-
。它在这里做什么?
最佳答案
由于投票,我将我的评论变成了答案。
你看到的不是守卫,而是list comprehension 。首先,将其视为表达数学集合符号的一种方式,例如 A = { x | x element N } 这意味着:集合 A 是所有自然数的集合。在列表理解中,这将是 [x | x <- [1..] ]
。
您还可以对号码使用限制:[x | x <- [1..], x `mod` 2 == 0 ]
以及许多其他事情。
有很多很好的 Haskell 图论,涵盖了列表理解,甚至还有一个关于 Haskell 资源的 StackOverflow 问题。
关于haskell - 理解 Haskell 斐波那契数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2404156/