Come affermato da @kotarak, non c'è modo (per quanto ne so) di farlo, né è auspicabile.
Ecco il motivo per cui non mi piace defn-
:
ho scoperto che quando si usa varie librerie Clojure a volte bisogno di modificare leggermente una funzione per meglio soddisfare le mie esigenze particolari. Spesso è qualcosa di abbastanza piccolo, e questo ha senso solo nel mio caso particolare. Spesso questo è solo un char o due.
Ma quando questa funzione riutilizza le funzioni private interne, rende più difficile la modifica. Devo copiare e incollare tutte quelle funzioni private.
Capisco che questo è un modo per il programmatore di dire che "questo potrebbe cambiare senza preavviso".
Indipendentemente da ciò, vorrei che la convenzione opposta:
- usano sempre
defn
, che rende tutto pubblico
- uso
defn+
(che non esiste ancora) per specificare al programmatore quali funzioni fanno parte di l'API pubblica che dovrebbe utilizzare. defn+
non dovrebbe essere diverso da defn
in caso contrario.
Inoltre si ricorda che è possibile in ogni caso access private functions:
;; in namespace user
user> (defn- secret []
"TOP SECRET")
;; from another namespace
(#'user/secret) ;;=> "TOP SECRET"
Non solo che non c'è, sarebbe davvero pasticcio con la mente di ogni altro clojuriano che osserva tale codice. Lo scoraggerei anche se fosse fattibile. –