递归列表

时间:2015-11-01 20:44:16

标签: haskell recursion functional-programming tail-recursion

我想创建一个无限列表,如下所示

this.something

我已经尝试了很多,我能想到的最好的是

(1:[]):(2:2:[]):(3:3:3:[]) ...

我确信这需要递归完成,但我无法看到它

任何提示或帮助都会非常感谢

2 个答案:

答案 0 :(得分:3)

这个怎么样:

concatMap (\x -> replicate x x) [1..]

它没有明确的递归,但可以做你想要的。

正如Keshav Kini所指出的,你可能想要没有连接的版本:

map (\x -> replicate x x) [1..]

答案 1 :(得分:1)

以下是递归定义的提议:

lss = [1]:map (\ls -> (1+head ls):(map (+1) ls)) lss

(即使复制解决方案更短!)