【问题标题】:When should I use deftype in Clojure?我应该什么时候在 Clojure 中使用 deftype?
【发布时间】:2010-01-12 10:38:10
【问题描述】:

昨天,Rich 将 Clojure 的“新”分支拉入 master。我们现在正在拥抱 deftype 和 defprotocol 的美。当然,来自 Haskell 的我很想像在 Haskell 中那样定义类型,这几乎适用于除了一次性元组之外的所有类型,但我认为在 Clojure 世界中不会这样工作;)。在 Clojure 的常见错误线程中,有人提到过度使用结构是他刚开始时犯的一个错误,来自 OOP。由于 deftypes 似乎与结构相似,我想知道那里是否同样适用。

所以,我的问题是:什么时候是使用 deftype 的好时机?

【问题讨论】:

    标签: clojure deftype


    【解决方案1】:

    deftype 的亮点之一是性能。协议的方法在定义类型上非常快。此外,deftype 可能有原始字段,因此在处理数字时不再装箱......

    另一个领域可能是 Java 互操作,因为 deftype 可以实现接口(如果 AOT 编译的话)有一个命名类。

    一般来说,基本思想是用协议定义抽象并用deftype实现它们。

    Rich 在这里详细说明了他的动机:http://www.assembla.com/wiki/show/clojure/Datatypes

    【讨论】:

    • 所以它有点像 Haskell,因为协议就像类型类,而数据类型就像......以及数据类型。 :p
    猜你喜欢
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2018-06-26
    • 2012-09-22
    • 1970-01-01
    • 2012-12-23
    相关资源
    最近更新 更多