1. ホーム
  2. clojure

ネームスペースの機能を一覧表示する方法は?

2023-09-05 14:38:56

質問

私はClojure名前空間のすべての関数を一覧表示する方法を知りたいです。私はいくつかの研究を行いましたが、私はまだそこにいません。私はすでにshowメソッドを使用してJavaクラスのメソッドを一覧表示する方法を見つけました。

(show java.awt.Graphics)

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

(show 'clojure.contrib.repl-utils)

これはJavaクラスのメソッドをいくつか示していますが、私が探しているような docshow . これらはどのように入手できますか?

どのように解決するのですか?

私は通常

(keys (ns-publics 'foo))

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

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

(この ... はかなり多くのことを表しています)。

より一般的には、名前が ns- で始まる関数があり、特定の追加条件を付けて名前空間によって Vars をリストします。

  1. ns-map -- 最も一般的な関数で、シンボル(実際には名前空間修飾されていないシンボル)によってキーが設定されたマップを返し、各シンボルに対応する値は与えられた名前空間でそのシンボルが解決する Var またはクラスです。

  2. ns-interns -- のように ns-map のようなものですが、与えられた名前空間に内在するVarsのみを含みます(他の名前空間からのVarsとは対照的に、与えられた名前空間から use または refer の呼び出しや、Vars の暗黙の参照は clojure.core .

  3. ns-publics -- のように ns-interns と同じですが、プライベートでないVarsだけを含んでいます。

  4. ns-imports -- のように ns-map と似ていますが、値がJavaクラスに対応する項目のみが含まれます。

また ns-aliases これは、他の名前空間から Vars を参照する際に、省略形のエイリアスとして使用できるシンボルをリストアップします。 (require '[clojure.contrib.math :as math]) , ns-aliases のキーを持つエントリが含まれます。 math (シンボル) をキーとするエントリを含み、その値は実際の名前空間である clojure.contrib.math . が返すマップにはこれらのマッピングは含まれません。 ns-map .