web-dev-qa-db-ja.com

名前空間の関数をリストする方法は?

Clojure名前空間のすべての関数をリストする方法を教えてください。私はいくつかの研究をしましたが、まだそこにはいません。私はすでにJavaクラスのメソッドをshowメソッドを使用してリストする方法を見つけました:

(show Java.awt.Graphics)

Clojure名前空間の関数を一覧表示するために、次のようなshowメソッドを試しました。

(show 'clojure.contrib.repl-utils)

これは、いくつかのJavaクラスメソッドを示していますが、docshowのような私が探しているものは示していません。これらを取得するにはどうすればよいですか?

68
StackedCrooked

私は通常電話します

(keys (ns-publics 'foo))

名前空間fooによってエクスポートされたVarをリストするには、例えばclojure.contrib.monadsの場合、これは

(defmonad censor m-when-not m+write+m maybe-m maybe-t ...)

...はかなり多くの意味です)。

より一般的には、名前がns-で始まる一連の関数があり、名前空間ごとにVarがリストされ、特定の追加の基準が付加されています。

  1. ns-map-すべての中で最も一般的な関数であり、シンボル(実際には非ネームスペース修飾シンボル)をキーとするマップを返します。各シンボルに対応する値は、指定されたネームスペースでシンボルが解決されるVarまたはクラスです。 。

  2. ns-interns-ns-mapと同様ですが、指定された名前空間にインターンされたVarのみが含まれます(useまたはrefer呼び出しまたは暗黙的な参照により、指定された名前空間からアクセス可能な他の名前空間からのVarとは異なります) clojure.coreからのVarsの。

  3. ns-publics-ns-internsと同様ですが、非プライベートVarのみが含まれます。

  4. ns-imports-ns-mapと似ていますが、Javaクラスに対応する値を持つエントリのみが含まれます。

ns-aliasesには、他の名前空間からVarを参照するときに省略形のエイリアスとして使用できる記号がリストされています。例えば(require '[clojure.contrib.math :as math])を呼び出すと、ns-aliasesにはmath(記号)のキーを持つエントリが含まれ、その値は実際のネームスペースclojure.contrib.mathになります。これらのマッピングは、ns-mapによって返されるマップには含まれていません。

86
Michał Marczyk

dir を使用できます。 (おそらく、最初に質問されたときには、これは利用できませんでした。)

user=> (dir clojure.string)
blank?
capitalize
escape
join
lower-case
re-quote-replacement
replace
replace-first
reverse
split
split-lines
trim
trim-newline
triml
trimr
upper-case
nil
60
Mars

ご覧ください こちら 。すなわち:

;; Sometimes I like to ask which public functions a namespace provides.
(defn- ns-publics-list [ns] (#(list (ns-name %) (map first (ns-publics %))) ns))
6
Bozhidar Batsov

反時計回りを使用する人のために、デフォルトで表示される「名前空間ブラウザ」があります。

表示されない場合は、メニューオプションから表示できます。

ウィンドウ>ビューを表示>名前空間ブラウザ

公式ドキュメント: http://doc.ccw-ide.org/documentation.html#_namespace_browser_view

公式ドキュメントからの抜粋:

ネームスペースブラウザビューには、アクティブなREPL。[2]のすべてのネームスペースのすべてのシンボルが表示されます。これにより、関連するファイル(jar内を含む)のシンボルの定義にジャンプできます。名前空間ブラウザビューでシンボル名をダブルクリックするだけです。

0
JeffreyGoines