Comment lister les fonctions d'un espace de noms?
Je voudrais savoir comment afficher la liste de toutes les fonctions d'une Clojure espace de noms. J'ai fait quelques recherches mais je n'en suis pas encore là. J'ai déjà trouvé comment afficher la liste des méthodes d'une classe Java à l'aide de la méthode show:
(show java.awt.Graphics)
À la liste des fonctions d'un Clojure espace de noms j'ai essayé la méthode afficher comme ceci:
(show 'clojure.contrib.repl-utils)
Cette montre certaines Java les méthodes de la classe, mais pas ceux que je cherche comme doc
et show
. Comment puis-je obtenir ces?
Vous devez vous connecter pour publier un commentaire.
J'ai l'habitude de l'appeler
à la liste de Vars exportés par l'espace de noms
foo
; par exemple pourclojure.contrib.monads
cela renvoie(le
...
signifie beaucoup plus).Plus généralement, il y a un tas de fonctions dont le nom commence dans
ns-
qui liste Vars par espace de noms, avec un certain nombre d'autres critères de rattachement:ns-map
-- la plus générale, 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
-- commens-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'unuse
ourefer
appel ou de l'implicite de référence de Varsclojure.core
.ns-publics
-- commens-interns
, mais ne comprend que les non-privé Vars.ns-imports
-- commens-map
, mais ne comprend que les entrées dont les valeurs correspondent à des classes Java.Il y a aussi
ns-aliases
qui répertorie les 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é demath
(le symbole), dont la valeur sera l'espace de nomsclojure.contrib.math
. Ces cartographie ne sont pas inclus dans la carte retournée parns-map
.doc
fonction d'une raison pour laquelle de fournir de la documentation pour les anciens des bibliothèques et d'autres paquets n'est pas une priorité absolue?Vous pouvez utiliser dir. (Peut-être que ce n'était pas disponible quand la question est posée.)
(dir *ns*)
ne fonctionne pas,Exception No namespace: *ns* found clojure.core/the-ns (core.clj:3691)
dir
de la documentation dans ma réponse, il y a un avis dans un coin, indiquant quedir
a été introduit en Clojure 1.6. Au moment où j'ai posté la réponse, peut-être que je devrais avoir inclus cette information. À ce point, v. 1.5 est déjà trois versions de retard sur la libération. Bien qu'il y a peut être des gens qui ont de bonnes raisons d'utiliser 1,5 ou même 1.4, je pense que ces cas sont rares.(dir my-actual-namespace)
fonctionne très bien en Clojure 1.8 alors que je reçois laNo namespace: *ns*
erreur si j'essaie(dir *ns*)
.dir
renvoie uniquement "public" vars,ns-map
est tout pour le tout.Ont un look ici. Plus précisément:
Pour ceux qui l'utilisent de Gauche, il y a un "Navigateur de l'espace de Noms" qui est affiché par défaut.
Si pas visible, il peut être indiqué via une option du menu:
La documentation officielle:
http://doc.ccw-ide.org/documentation.html#_namespace_browser_view
Extrait de la documentation officielle: