deftype
и defprotocol
определяют динамическое поведение в Clojure. В Racket мы будем делать такие вещи с struct
или struct-property
, хотя в Racket нет ничего похожего на defprotocol
.
Редактировать: Ракетка теперь имеет универсальных , которые похожи на протоколы Clojure.
reify
и extend
, я думаю, соответствуют использованию make-struct-type
в Racket, который динамически создает новые типы структур.
Большая разница между Typed Racket и всеми этими функциями заключается в том, что Typed Racket проверяет вашу программу статически - перед попыткой ее запуска. Вы никогда не сможете применить неправильный метод доступа в программе Typed Racket или использовать число в качестве функции. Вы даже не можете запустить программу, которая может иметь такую ошибку.
В настоящее время функциями Clojure, которые больше всего похожи на Typed Racket, являются аннотации, которые он использует для повышения производительности.
Редактировать: Теперь есть Typed Clojure от Ambrose Bonnaire-Sergeant, который вдохновлен и основан на Typed Racket.