9.2 トップレベル指示子

以下の指示子は、トップレベルの振る舞いを制御し、ファイルをメモリに読み込み、プログラムの実行をトレースするためのものです。

指示子はすべて # (シャープ)で始まります。 指示子の前には必ず # を入力し、対話ループによって表示されるプロンプトの # と混同しないようにしてください。 例えば、 #quit;; と入力するとトップレベルループを終了しますが、 quit;; と入力すると unbound value quit というエラーになります。

#quit;;

トップレベルループを抜け、 ocaml コマンドを終了します。

#labels bool;;

引数が false の場合には関数の型中のラベルを無視し、 true の場合にはデフォルトの動作(commuting style)に戻ります。

#warnings "warning-list";;

引数に応じて警告を有効/無効にします。

#directory "dir-name";;

ソースファイルやコンパイル済みファイルを探索するディレクトリのリストに指定されたディレクトリを追加します。

#cd "dir-name";;

カレントディレクトリを変更します。

#load "file-name";;

バッチコンパイラ ocamlc の生成したバイトコードオブジェクト(.cmo ファイル)をメモリに読み込みます。[11]

#use "file-name";;

与えられたファイルからフレーズを読み込み、コンパイルして実行します。 これはテキストレベルの取り込みで、フレーズを標準入力にそのまま打ち込んだのと同じように処理されます。 最初にエラーが発生した時点でファイルの読み込みは終了します。

#install_printer printer-name;;

printer-name (値パス)という関数を、その関数の引数の型と一致する値を表示するための関数として登録します。 そのような値を表示するとき、トップレベルループから printer-name が呼び出されます。

表示関数 printer-nameFormat.formatter -> t -> unit 型の関数で(t は表示する値の型です)、 Format ライブラリで提供される関数を利用して指定された formattert 型の値のテキスト表現を出力します。 後方互換性のために、 printer-namet -> unit 型の関数とし、標準の formatter で出力することもできますが、その使用法は推奨されません。

#remove_printer printer-name;;

指定された名前の関数をトップレベルの表示関数の表から取り除きます。

#trace function-name;;

この指示子の実行以後、 function-name という名前の関数の呼び出しが「トレース」されるようになります。 関数の各呼び出しごとに引数と戻り値を表示し、さらに、関数を通過した例外について、それがその関数内で発生したものなのか、そこから呼び出された別の関数で発生したものなのかを表示します。 関数がカリー化されている場合には、引数はその関数に渡された時にそれぞれ別個に表示されます。

#untrace function-name;;

指定された関数のトレースを中止します。

#untrace_all;;

これまでトレースしていた関数すべてのトレースを中止します。

#print_depth n;;

値を表示する際の深さを最大 n に制限します。 深さ n 以上の部分は ... のように表示されます。

#print_length n;;

値のノードを表示する際の最大数を n に制限します。 値の残り部分は ... のように表示されます。



[11] 訳注: .cma ファイルも可。