Что означает идиоматика (defn -main ...) в программе clojure? - PullRequest
11 голосов
/ 15 марта 2011

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

Edit:

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

(соответственно сократил объем названия вопроса)

1 Ответ

6 голосов
/ 15 марта 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...