Я определяю пространство имен внутри библиотеки clojure без ',
(ns myproject.hello)
Но я использую' для его использования.
(use 'myproject.hello)
Почему это? Есть ли за этим логика? В черт возьми (диалект схемы), я использую без 'ie (использовать myproject) Почему это нарушение?
Краткий ответ: ns
- это макрос, поэтому его аргументы не оцениваются. use
- это функция, поэтому ее аргументы должны быть заключены в кавычки, чтобы компилятор не мог их вычислить.
Функции use / require не были частью оригинального дизайна Clojure, они были добавлены участниками. Они нуждаются в капитальном ремонте.
Идиоматический способ:
(ns myproject.hello
(: используйте myproject.world))