2017-03-27 18 views
0

*ns*は、名前空間宣言ではなく名前空間を返します。 clojure.tools.namespace.parse.deps-from-ns-declには宣言が必要です。ファイルから宣言を読み込むには多くの方法があります。現在の名前空間(*ns*)から宣言を取得するにはどうすればよいですか。このことができます場合は、ここでREPLを起動咳ものです:現在の名前空間の依存関係

(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

できない場合があります。 'ns'は構文に似ていますが、実際は' require'のようなものをカバーの下に呼び出すマクロです。必要なものに応じて、 'ns-map'と' ns-aliases'関数からいくつかの関連情報を入手できます。 –

+0

ありがとうございます。おそらく、現在の名前空間のソースファイルを見つける方法がありますか? – Chip

+0

私はあなたがネームスペース自体からすることはできないと思います。本当にとてもダイナミックなものです。しかし、多くの関数はソースファイルで定義されており、関連するvar(名前空間エントリ)にはメタデータがあります。だから、 '( - >>(vals(ns-publics * ns *))(map(comp:file meta))のようなことをすることができる。 –

答えて

0

それはこのような質問をすると、「メタ」名前空間の作業から生じることが判明しました。 Tawny OWLのオントロジー定義と関連して、私のアプリはClojureの名前空間の考え方の上に乗っています。私の質問に答えるために、私は独自の依存宣言を使って、アプリケーションに名前空間の感覚を作り出さなければなりませんでした。基材名前空間の構造はまさにそのものです。

関連する問題