Typed Racket中的打字特征和Clojure中的类型特征有哪些相似之处和不同之处?

15

Clojure有一些有趣的特性来表示类型,包括但不限于deftype, defprotocol, reifyextend

Typed Racket中的类型特性与Clojure中的类似特性之间有哪些相似之处和差异?

1个回答

17

deftypedefprotocol 在Clojure中定义动态行为。在Racket中,我们会使用structstruct-property来做类似的事情,尽管Racket中没有像defprotocol那样的东西。

编辑: Racket现在有了generics,它们类似于Clojure的协议。

reifyextend,我认为对应于在Racket中使用make-struct-type创建新的动态结构类型。

Typed Racket和所有这些特性之间的主要区别在于,Typed Racket在尝试运行程序之前进行静态检查。在Typed Racket程序中,您永远不能应用错误的访问器或将数字用作函数。您甚至无法运行可能存在此类错误的程序。

目前,与 Typed Racket 最相似的 Clojure 特性是它用于性能的注释。

编辑: 现在有了Ambrose Bonnaire-Sergeant的Typed Clojure,它受到 Typed Racket 的启发并基于其构建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接