В Clojure есть несколько интересных функций для представления типов, включая, помимо прочего, deftype, defprotocol, reify и extend.
deftype
defprotocol
reify
extend
Каковы сходства и различия между возможностями типизации в Typed Racket и возможностями типизации в Clojure?