Помимо отсутствия документации, в чем разница между definterface
и defprotocol
в Clojure?
Разница между definterface и defprotocol в Clojure
Ответ 1
Согласно Радости Clojure:
Преимущества использования
definterface
болееdefprotocol
ограничены полностью к тому, что первый позволяет примитивные типы для аргументов и возвратов. В какой-то момент в будущем такое же преимущество скорее всего, будет распространяться на интерфейсы, созданные [по протоколам], поэтому используйтеdefinterface
экономно и предпочитают протоколы, если абсолютно необходимо.
Ответ 2
Мое, возможно, неполное понимание заключалось в том, что definterface
создает интерфейс .class, который может реализовать Java-код, чтобы создавать классы, подходящие для передачи вашим функциям Clojure.
Протоколы - это, короче говоря, более быстрый и более целенаправленный способ отправки, чем мультиметоды. у вас на самом деле есть исполняемый код в протоколе, который используется другим кодом Clojure.