all-ns , как предложено kotarak, близко к тому, что вы ищете, но оно также дает вам все пространства имен, которые были required
без ссылки.
В противном случае ns-Refer дает вам карту всех функций, которые упоминаются в пространстве имен.Сходными и, возможно, также интересными являются ns-map и ns-import , которые дают вам отображение всех импортированных классов или записей.
Если вы хотите строго найти все пространства имен, из которых были переданы функции, вы можете сделать что-то вроде этого:
(defn ns-used? [ns]
(let [referred-namespaces (set (map (fn [[k v]] (:ns (meta v))) (ns-refers *ns*)))]
(contains? referred-namespaces (find-ns ns))))
Если вы счастливы проверить, было ли пространство имен required
или used
вы можете сделать
(defn ns-used-or-required? [ns]
(contains? (set (all-ns)) (find-ns ns)))
Вам нужно будет передать символ в кавычках:
(ns-used? 'clojure.core)