Typed Racket中的输入功能与Clojure中的类型功能有什么相同点和不同点?

haw*_*eye 15 types protocols clojure racket typed-racket

Clojure的有代表类型,包括但不限于一些有趣的功能deftype,defprotocol,reifyextend.

Typed Racket中的输入功能与Clojure中的类型功能有什么相同点和不同点?

Sam*_*adt 17

deftypedefprotocol在Clojure中定义动态行为.在Racket中,我们会用struct或做类似的事情struct-property,尽管defprotocol在Racket中没有什么比这更像.

编辑: Racket现在有泛型,就像Clojure协议.

reify而且extend,我认为,它对应make-struct-type于Racket的使用,它可以动态创建新的结构类型.

Typed Racket和所有这些功能之间的最大区别在于,Typed Racket会在尝试运行之前静态检查您的程序.您不能在Typed Racket程序中应用错误的访问者,或使用数字作为函数.您甚至无法运行可能出现类似错误的程序.

目前,Clojure最像Typed Racket的功能是它用于性能的注释.

编辑:现在有Ambrose Bonnaire-Sergeant的Typed Clojure,它的灵感来源于Typed Racket.