Я обычно звоню
(keys (ns-publics 'foo))
для вывода списка переменных, экспортируемых пространством имен foo
; например для clojure.contrib.monads
это возвращает
(defmonad censor m-when-not m+write+m maybe-m maybe-t ...)
(...
означает гораздо больше).
В более общем смысле, есть группа функций, имена которых начинаются с ns-
, которые перечисляют Vars по пространству имен, с некоторыми дополнительными критериями:
ns-map
- самая общая функция из всех, возвращает карту, обозначенную символами (фактически, не квалифицированными символами пространства имен), где значение, соответствующее каждому символу, является Var или классом, к которому разрешается символ в заданном пространстве имен.
ns-interns
- аналогично ns-map
, но включает только переменные, интернированные в данном пространстве имен (в отличие от переменных из других пространств имен, которые доступны из данного пространства имен благодаря use
или refer
вызов или неявное направление Vars от clojure.core
.
ns-publics
- аналогично ns-interns
, но включает только не частные переменные.
ns-imports
- аналогично ns-map
, но включает только записи, значения которых соответствуют классам Java.
Также есть ns-aliases
, в котором перечислены символы, которые могут использоваться в качестве сокращенных псевдонимов при обращении к Vars из других пространств имен; например если вы звоните (require '[clojure.contrib.math :as math])
, ns-aliases
будет включать запись с ключом math
(символ), значением которого будет фактическое пространство имен clojure.contrib.math
. Эти сопоставления не включены в карту, возвращаемую ns-map
.