Что означает idiomatic (defn -main...) в программе clojure?

Я знаком с пакетами, например. Java и Lisp, но то, что я вижу в коде других людей, - это некоторые очевидные идиомы, такие как вызов точки входа "-main" и использование обратного выражения для имени пространства имен в (in-ns `foo), такого рода вещи, Я не вижу, чтобы это было написано в документах или учебниках. Есть ли какой-то ресурс, который объясняет такие соглашения вокруг структурирования программ?

Edit:

Я думаю, что я, должно быть, взял ответный ответ из этого ответа: Разделение пространства имен Clojure на несколько файлов, которое я наткнулся, пытаясь понять смысл of (defn -main...). Учитывая автора, я воспринял его как наилучшую практику. Однако теперь, когда я выскакиваю в источниках Clojure, которые он цитирует, я вижу, что используется только обычная цитата. Я думаю, скорее всего это опечатка.

(Соответственно, сузилась область заголовка вопроса)

Ответ 1

По умолчанию для gen-класса используется - как префикс для имен методов этого класса. Вот почему -main является точкой входа по умолчанию для java -cp clojure.jar yourclass

Backticks квалифицируют свой аргумент с текущим пространством имен, поэтому (in-ns `foo) совпадает с (in-ns 'current-namespace/foo), и я не думаю, что это особенно идиоматично. Идиоматическим способом является размещение каждого пространства имен в собственном файле с помощью (ns...) вверху и использование или требование по мере необходимости.