Почему странное использование для ns / использование с Clojure? - PullRequest
7 голосов
/ 19 августа 2010

Я определяю пространство имен внутри библиотеки clojure без ',

(ns myproject.hello) 

Но я использую 'для его использования.

(use 'myproject.hello)

Почему это? Есть ли за этим логика? В черт возьми (диалект схемы), я использую без ', т. Е. (Используйте мой проект) Почему это нарушение?

Ответы [ 2 ]

15 голосов
/ 19 августа 2010

Краткий ответ: ns - макрос, поэтому его аргументы не оцениваются. use является функцией, поэтому ее аргументы должны быть заключены в кавычки, чтобы компилятор не мог их оценить.

Функции use / require не были частью оригинального дизайна Clojure, их добавили участники. Они нуждаются в капитальном ремонте.

3 голосов
/ 22 августа 2010

Идиоматический способ:

(ns myproject.hello

(: используйте myproject.world))

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