标签: haskell recursion
我有一个递归生成无限列表的函数,但永远不会返回:
f n ns = f (n+1) (n:ns)
考虑到懒惰,我是否需要返回条件,或者我可以使用take 10 $ foo 0 []做某些事情以使其返回?
take 10 $ foo 0 []
答案 0 :(得分:2)
你的功能根本不会回来。它总是recurses。如果你希望它返回,你需要添加某种停止条件,或者让它返回部分结果。
也许你真的打算写一些像
n
返回{{1}},然后进行递归调用以生成列表的其余部分。 (?)