Почему require в форме ns ведет себя иначе, чем функция require - PullRequest
11 голосов
/ 15 сентября 2010

Когда мне требуются библиотеки из формы 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 Ответ

16 голосов
/ 15 сентября 2010

Форма ns является макросом, и поэтому вам не нужно использовать 'для цитирования предоставленной последовательности.

Пример из документации Clojure:

(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)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...