Почему запрос в форме ns отличается от функции require
Когда мне нужны библиотеки из формы ns, я получаю:
test> (ns test (:require '(clojure.contrib [logging :as log] [sql :as sql]) ))
lib names inside prefix lists must not contain periods
[Thrown class java.lang.Exception]
Когда я использую функцию require, она работает как ожидалось.
test> (require '(clojure.contrib [logging :as log] [sql :as sql]) )
nil
Документация для ns относится к документации функции require, но поскольку они ведут себя по-другому, это немного запутывает.
Ответы
Ответ 1
Форма ns
- это макрос, и поэтому он не требует, чтобы вы использовали ', чтобы процитировать предоставленный seq.
Пример из Clojure docs:
(ns foo.bar
(:refer-clojure :exclude [ancestors printf])
(:require (clojure.contrib sql sql.tests))
(:use (my.lib this that))
(:import (java.util Date Timer Random)
(java.sql Connection Statement)))