gpt4 book ai didi

recursion - 在 Clojure 中,如何编写自己的递归函数来处理惰性列表?

转载 作者:行者123 更新时间:2023-12-02 23:54:41 25 4
gpt4 key购买 nike

我只是想向某人展示我的懒惰,所以我编写了一个简单的递归函数来处理列表。

我认为在无限列表中会很好。但突然我得到了“太多递归”内部错误。

嗯?我总是编写执行此类操作的代码。有什么问题吗?

但是,当然,通常我使用 map 等内置函数作为其他列表处理函数的基础。这次我尝试编写自己的递归遍历。当然,这是不可能的。

这是我写的。

(defn q [xs] 
(if (empty? xs) ()
(cons (* (first xs) (first xs)) (q (rest xs)) )))

(take 10 (q (cycle '(1 2 3 4))))

那么,实际上我该如何编写自己的遍历函数来处理 Clojure 中的惰性数据结构呢?是否存在某种相当于“产量”的东西?

最佳答案

(defn q [xs] 
(if (empty? xs) ()
(lazy-seq ;; <- here's our magic!
(cons (* (first xs) (first xs)) (q (rest xs)) ))))

(take 10 (q (cycle '(1 2 3 4))))

关于recursion - 在 Clojure 中,如何编写自己的递归函数来处理惰性列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43814838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com