clojure.repl
var のドキュメントとスロー可能オブジェクト(throwable)のスタックトレースを出力する名前空間です。
clojure.repl を require すると使えます(clojure> REPL は doc と pst を最初から refer しています。
REPL を参照)。Clojure の同名の名前空間について文書化された振る舞いを
もとに rontolisp 向けに書いた Clojure ソースで、すべてのバックエンドで同じように動きます。
| var | 振る舞い |
|---|---|
doc | (doc name): var の名前、引数リスト、マクロなら Macro、docstring を、定義に書かれたとおりに出力する。特殊形式なら名前、Special Form、clojure.org のページ |
pst | (pst)、(pst e-or-depth)、(pst e depth): throwable の単純クラス名、メッセージ、ex-data を *err* に出力し、続けて Caused by: のあとに各原因を出力する。throwable を渡さなければ *e の根本原因 |
root-cause | (root-cause t): 原因をたどった最も内側の原因。原因がなければ t 自身 |
demunge | (demunge s): スタックトレース要素が示す関数のクラス名を Clojure の綴りに戻したもの |
stack-element-str | (stack-element-str el): ホストの StackTraceElement を文字列にしたもの。Clojure の関数はデマングルした名前(インタープリターと JVM) |
-------------------------
user/add-one
([x])
Adds one.
組み込まれていないもの
次の var は、プログラムを変換する時点で名前を挙げて拒否します。
dir、dir-fn、apropos、find-doc: 名前空間の var はプログラムを変換している間にしか わからない。source、source-fn: 定義のテキストは実行時に残らない。set-break-handler!、thread-stopper: シグナルハンドラーはなく、JDK はもうThread.stopをサポートしない。
違い
- 特殊形式の
docは名前、Special Form、clojure.org へのリンクを出力し、Clojure の構文と説明文は 出力しません。clojure.coreの var のメタデータは:nameと:nsだけなので、docは名前だけを 出力します。 - var でない名前(名前空間を含む)の
docは変換時のUnable to resolve varです。Clojure は 名前空間の docstring を出力するか、何も出力しません。キーワード(spec)のdocは拒否します。 - ここでの throwable はスタックフレームを持たないため、
pstはフレームを出力しません。