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