Что означает 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...) вверху и использование или требование по мере необходимости.