После определения записи и интерфейсов, которые она реализует, я могу вызывать ее методы либо по ее имени, либо используя способ взаимодействия java с помощью оператора точки.
user=> (defprotocol Eat (eat [this]))
Eat
user=> (defrecord animal [name] Eat (eat [this] "eating"))
user.animal
user=> (eat (animal. "bob"))
"eating"
user=> (.eat (animal. "bob"))
"eating"
user=>
Под поверхностью, что там происходит? Существуют ли новые функции clojure? Что происходит, когда есть определенные вами функции, которые имеют одно и то же имя (возможно ли это?), Как разрешаются эти двусмысленности?
Кроме того, возможно ли "импортировать" java-методы для других объектов Java, чтобы вам не понадобилось. оператора, чтобы поведение было как указано выше? (Например, для объединения пользовательского интерфейса)