Я знаю, что могу использовать defonce для нормального определения, но как я могу предотвратить переопределение функции clojure?
Вы можете использовать defonce для этого, но вы должны иметь в виду какой-то особый вариант использования - есть причина, по которой в clojure.core не существует defn-единовременно
(defonce fn-sym (fn [ ... ] .... ))
Я собирался написать то, что сказал Джуст, но он опередил меня, поэтому я пропущу эту часть.
Если вы действительно хотите defn-once, сделайте источник source defn и сделайтечто-то похожее, но поменяйте 'def где-нибудь ближе к концу с 'defonce.
defn-once
source defn
'def
'defonce