clojure:堆栈溢出超出范围

clojure:堆栈溢出超出范围,clojure,stack-overflow,Clojure,Stack Overflow,我正在4clojure.com上尝试解决问题60 我的解决方案适用于最后两个案例,但在处理范围内的第一个案例失败 这是我的解决办法 (fn reds ([func lst](if (empty? lst) [] (reds func (first lst) (rest lst)))) ([func init lst](if (empty? lst) (println "hi") (concat [init]

我正在4clojure.com上尝试解决问题60

我的解决方案适用于最后两个案例,但在处理范围内的第一个案例失败

这是我的解决办法

(fn reds
([func lst](if (empty? lst)
           []
           (reds func (first lst) (rest lst))))
([func init lst](if (empty? lst)
           (println "hi")
           (concat [init] (reds func (func init (first lst)) (rest lst)))))
)
我想这是因为我一直在无限列表的更多项上调用函数。但我怎样才能做得更好呢


更新:使用lazy seq解决了这个问题,返回序列必须是lazy“我如何使它变懒?不用担心。刚刚学习了lazy-seq,你可以通过展示你的代码来回答你自己的问题,这些代码可以帮助其他人。“返回序列必须是lazy”我如何让它变懒?不用担心。刚刚学习了lazy-seq,你可以通过展示你的代码来回答你自己的问题,这些代码可以帮助其他人。“返回序列必须是lazy”我如何让它变懒?不用担心。刚刚学习了lazy Seq,您可以通过显示代码来回答自己的问题,这些代码可以帮助他人。