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