*ns*
gibt einen Namespace zurück, keine Namespacedeklaration. clojure.tools.namespace.parse.deps-from-ns-decl
erfordert eine Deklaration. Es gibt viele Möglichkeiten, Deklarationen aus Dateien zu lesen. Wie bekomme ich die Deklaration aus dem aktuellen Namespace (*ns*
). Wenn das hilft, ist hier, was die REPL spuckt:Abhängigkeiten des aktuellen Namespaces
(deps-from-ns-decl *ns*)
IllegalArgumentException Don't know how to create ISeq from: clojure.lang.Namespace clojure.lang.RT.seqFrom (RT.java:542)
Sie können möglicherweise nicht. 'ns' sieht aus wie Syntax, aber es ist wirklich ein Makro, das Dinge wie' require' unter dem Deckblatt aufruft. Je nachdem, was Sie benötigen, sind einige relevante Informationen über die Funktionen 'ns-map' und' ns-aliases' verfügbar. –
Danke. Vielleicht gibt es eine Möglichkeit, die Quelldatei des aktuellen Namespace zu finden? – Chip
Ich glaube nicht, dass Sie aus dem Namensraum selbst, wie es wirklich eine sehr dynamische Sache ist. Aber viele Funktionen sind in Quelldateien definiert, und wenn sie die zugehörige Variable (Namespace-Eintrag) sind, haben einige Metadaten Sie darüber informiert. So könnten Sie etwas tun wie '(- >> (Vals (ns-publics * ns *)) (Karte (comp: Datei Meta)) (in # {}))' –