【问题标题】:How to achieve a recursive deftype如何实现递归deftype
【发布时间】:2011-06-16 14:09:37
【问题描述】:

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

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

这不起作用...但是我看不出它不可能的内在原因,因为底层 Java 类完全能够引用自身。

我在这里做错了什么?

迈克。

【问题讨论】:

    标签: data-structures clojure type-hinting deftype


    【解决方案1】:

    目前,字段上的 ^Class 提示(与 ^primitive 提示相反)被丢弃,因此尝试放置它们没有任何好处。这在未来可能会改变。

    然而,类型定义中的自动引用(例如在方法体中,而不是在字段中)有些工作,但实现有点麻烦。鉴于承诺在 Clojure 中重写编译器,在当前的 java 编译器中修复自动引用几乎没有动力。

    【讨论】:

    • 谢谢 - 非常有用的解释(虽然也很烦人,因为我真的很想使用一些递归引用!)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 2012-01-04
    • 2017-01-31
    • 2020-07-21
    • 2019-11-05
    • 2011-11-07
    • 2019-04-07
    相关资源
    最近更新 更多