2017-03-27 3 views
0

*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) 
+0

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. –

+0

Danke. Vielleicht gibt es eine Möglichkeit, die Quelldatei des aktuellen Namespace zu finden? – Chip

+0

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 # {}))' –

Antwort

0

Es stellt sich heraus, dass Fragen wie diese zu fragen aus „meta“ entsteht Namensraum zu arbeiten. In Verbindung mit Tawny OWL Ontologie Definitionen, meine App reitet über Clojure Namespace denken. Um meine Frage zu beantworten, musste ich in der App einen Sinn für Namespace mit eigenen Abhängigkeitsdeklarationen erstellen. Substratnamespacekonstrukte sind genau das.

Verwandte Themen