如何实现递归deftype

时间:2011-01-27 14:17:58

标签: data-structures clojure type-hinting deftype

我很好奇如何做一个包含对自身引用的Clojure deftype,例如。

  (deftype BinaryTree [^BinaryTree left ^BinaryTree right])

这不起作用......但是我没有看到它为什么不可能的内在原因,因为底层的Java类完全能够引用它自己。

我在这里做错了什么?

麦克

1 个答案:

答案 0 :(得分:10)

目前,字段上的^类提示(与^原始提示相对)被丢弃,因此尝试放置它们没有任何好处。这可能在将来发生变化。

然而,类型定义中的自动引用(例如,在方法体中,而不是在字段中)有些工作,但实现有点黑客。考虑到在Clojure中重写编译器的承诺,在当前的java编译器中修复自动引用的动机很小。