This is because it requireis implemented as a function, not a macro, so it needs the libspec quoted. Unsolicited libspec will be evaluated as follows:
user=> [clojure.set :as s]
CompilerException java.lang.ClassNotFoundException: clojure.set
which gives an error.
, ns , , libspec. ns , , :
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
, ns libspec , , , .