J'ai l'habitude de l'appeler
(keys (ns-publics 'foo))
pour la liste de Vars exportés par l'espace de noms foo
; par exemple, pour clojure.contrib.monads
ce retourne
(defmonad censor m-when-not m+write+m maybe-m maybe-t ...)
(l' ...
signifie beaucoup plus).
Plus généralement, il y a un tas de fonctions dont les noms commencent en ns-
qui liste Vars par espace de noms, avec certains critères supplémentaires ci-jointe:
ns-map
- la plus générale de la fonction de tous, retourne une carte assortie par des symboles (non-espace de noms qualifiés symboles en fait), où la valeur correspondant à chaque symbole est le Var ou d'une classe qui symbole résout dans l'espace de noms donné.
ns-interns
-- comme ns-map
, mais ne comprend que les Vars internés dans l'espace de noms indiqué (par opposition à Vars à partir d'autres espaces de noms qui sont accessibles à partir de l'espace de noms donné en raison d'un use
ou refer
appel ou de l'implicite de référence de Vars clojure.core
.
ns-publics
-- comme ns-interns
, mais ne comprend que les non-privé Vars.
ns-imports
-- comme ns-map
, mais ne comprend que les entrées dont les valeurs correspondent à des classes Java.
Il y a aussi ns-aliases
de listes de symboles qui peut être utilisé comme abréviation alias lorsque l'on se réfère à Vars à partir d'autres espaces de noms; par exemple, si vous appelez (require '[clojure.contrib.math :as math])
, ns-aliases
comprendra une entrée avec la clé de math
(le symbole), dont la valeur sera l'espace de noms clojure.contrib.math
. Ces cartographie ne sont pas inclus dans la carte retournée par ns-map
.