如何使用`take`从生成列表的递归函数返回

时间:2016-03-13 13:46:38

标签: haskell recursion

我有一个递归生成无限列表的函数,但永远不会返回:

f n ns = f (n+1) (n:ns)

考虑到懒惰,我是否需要返回条件,或者我可以使用take 10 $ foo 0 []做某些事情以使其返回?

1 个答案:

答案 0 :(得分:2)

你的功能根本不会回来。它总是recurses。如果你希望它返回,你需要添加某种停止条件,或者让它返回部分结果。

也许你真的打算写一些像

这样的东西
n

返回{{1}},然后进行递归调用以生成列表的其余部分。 (?)