Why do we need ' in (require '[…]]) with Clojure?
我看到我们不需要'
但是,为什么在
我们使用
未引用的错误消息也令人困惑。
这是因为
1 2 | user=> [clojure.set :as s] CompilerException java.lang.ClassNotFoundException: clojure.set |
因此产生错误。
但是,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | user=> (use 'clojure.pprint) nil user=> (pprint (macroexpand '(ns foo (:require [clojure.set :as s])))) (do (clojure.core/in-ns 'foo) (clojure.core/with-loading-context (clojure.core/refer 'clojure.core) (clojure.core/require '[clojure.set :as s])) (if (.equals 'foo 'clojure.core) nil (do (clojure.core/dosync (clojure.core/commute @#'clojure.core/*loaded-libs* clojure.core/conj 'foo)) nil))) nil |
如您所见,
利基是:引用向量本质上是引用向量形式内的每个子形式。
1 2 | user> (= '[a b c] ['a 'b 'c]) => true |