【发布时间】:2010-09-12 19:22:59
【问题描述】:
忽略本机互操作和瞬态,是否可以在 Clojure 中创建包含直接循环引用的任何数据结构?
似乎不可变的数据结构只能包含对自身先前版本的引用。是否有任何 Clojure API 可以创建引用自身的新数据结构?
Scheme 具有 letrec 形式,允许创建相互递归的结构 - 但据我所知,Clojure 没有类似的东西。
这个问题与将 Clojure 移植到 iOS 有关 - 它没有垃圾收集,但有引用计数。
【问题讨论】:
-
这是一个密切相关的 SO 问题:How to create a lazy-seq generating, anonymous recursive function in Clojure?。有关多种可能的方法,请参阅我的答案。其中之一是通过某种
letrec宏——我的版本见this Gist(与Scheme 的letrec类似)。 -
感谢您的所有回答。看来我需要完整的 GC 来处理 Clojure,并且我正在尝试将 Gambit Scheme 作为翻译目标。
-
您可能对此stack-exchange proposal 感兴趣。它几乎可以开始 Beta 测试了,还需要更多。
标签: clojure circular-reference