我很好奇如何做一个包含对自身引用的Clojure deftype,例如。
(deftype BinaryTree [^BinaryTree left ^BinaryTree right])
这不起作用......但是我没有看到它为什么不可能的内在原因,因为底层的Java类完全能够引用它自己。
我在这里做错了什么?
麦克
答案 0 :(得分:10)
目前,字段上的^类提示(与^原始提示相对)被丢弃,因此尝试放置它们没有任何好处。这可能在将来发生变化。
然而,类型定义中的自动引用(例如,在方法体中,而不是在字段中)有些工作,但实现有点黑客。考虑到在Clojure中重写编译器的承诺,在当前的java编译器中修复自动引用的动机很小。