忽略本机互操作和瞬态,是否可以在 Clojure 中创建任何包含直接循环引用的数据结构?
看起来不可变的数据结构只能包含对自身先前版本的引用。是否有任何 Clojure API 可以创建一个引用自身的新数据结构?
Scheme 具有 letrec 形式,允许创建相互递归的结构 - 但是,据我所知,Clojure 没有类似的东西。
这个问题与将 Clojure 移植到 iOS 相关 - iOS 没有垃圾收集,但有引用计数。
通过将某种形式的引用放入数据结构中,然后更新引用以指向整个结构,您可以非常轻松地创建循环引用。
一个简单的例子:
(def a [(atom nil)])
(reset! (first a) a)
这将创建一个包含一个元素的列表,该元素是指向列表的原子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)