gpt4 book ai didi

clojure - Clojure 循环数据结构必须涉及像 ref 这样的结构吗?

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

今天我看到了一些关于结婚和循环数据结构的引用。我一直在阅读一些答案,这些解决方案似乎涉及使用 ref 来指向列表的头部。一个特别的SO question显示了一个 Haskell 示例,但我不太了解 Haskell,无法知道该示例是否使用了相当于 ref 的 Haskell。

有没有一种方法可以在不使用 ref 或类似构造的情况下使 Clojure 数据结构循环?

谢谢。

最佳答案

我直接将 Haskell 示例翻译成 Clojure:

user> (def alternates
(letfn [(x [] (lazy-seq (cons 0 (y))))
(y [] (lazy-seq (cons 1 (x))))]
(x)))
#'user/alternates
user> (take 7 alternates)
(0 1 0 1 0 1 0)

它按预期工作。不过,我更喜欢使用 cycle 函数,而不是使用 letfn 的相互递归函数:

user> (take 7 (cycle [0 1]))
(0 1 0 1 0 1 0)

关于clojure - Clojure 循环数据结构必须涉及像 ref 这样的结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11568036/

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