如何在将列表作为参数传递时将 Int 添加到 Int 列表?

How to add an Int to a list of Int while passing the list as an argument?

我想生成前 n 个斐波那契数列。 我有 3 个功能:

我的问题很简单,但我就是想不通。 该行

fib n m = fib (n-1) m : (fib2 n)

不起作用,尤其是 "m : (fib2 n)" 部分。我想计算第 n 个斐波那契数(使用 fib2 n)并将其添加到我的斐波那契数列表 m 中。我以为“:”向列表添加了一个新元素,但不知何故我用错了。

完整代码下方

fib2 :: Int -> Int
fib2 0 = 1
fib2 1 = 1
fib2 n = fib2 (n - 1) + fib2 (n - 2)

fib :: Int -> [Int] -> [Int]
fib 0 m = m
fib n m = fib (n-1) m : (fib2 n)

fibonacci :: Int -> [Int]
fibonacci n = fib n []

好吧,我发现我是个白痴。我必须切换“:”函数的参数

fib n m = fib (n-1) (fib2 n : m)

一切都很好。