Подтвердить что ты не робот

Разница между definterface и defprotocol в Clojure

Помимо отсутствия документации, в чем разница между definterface и defprotocol в Clojure?

4b9b3361

Ответ 1

Согласно Радости Clojure:

Преимущества использования definterface более defprotocol ограничены полностью к тому, что первый позволяет примитивные типы для аргументов и возвратов. В какой-то момент в будущем такое же преимущество скорее всего, будет распространяться на интерфейсы, созданные [по протоколам], поэтому используйте definterface экономно и предпочитают протоколы, если абсолютно необходимо.

Ответ 2

Мое, возможно, неполное понимание заключалось в том, что definterface создает интерфейс .class, который может реализовать Java-код, чтобы создавать классы, подходящие для передачи вашим функциям Clojure.

Протоколы - это, короче говоря, более быстрый и более целенаправленный способ отправки, чем мультиметоды. у вас на самом деле есть исполняемый код в протоколе, который используется другим кодом Clojure.