本章では Objective Caml のトップレベルシステムについて解説します。
トップレベルシステムを使うと Objective Caml システムを REPL (read-eval-print loop)を介して対話的に利用することができます。
このモードでは、システムは入力から Caml のフレーズを繰り返し読み込み、型を検査してコンパイルして評価し、戻り値があればそれに対して推論された型と結果の値を表示します。
システムはフレーズを読み込む前にプロンプトとして #
を表示します。
トップレベルに複数行にわたる入力を与えることもできます。
入力は ;;
(ダブルセミコロン)で終端します。
トップレベルへの入力は以下の構文で表されるフレーズをひとつ以上並べたものです。
toplevel-input | ::= | { toplevel-phrase } ;; |
toplevel-phrase | ::= | definition |
| | expr | |
| | # ident directive-argument | |
directive-argument | ::= | ϵ |
| | string-literal | |
| | integer-literal | |
| | value-path |
フレーズには、翻訳単位の実装やモジュール式 struct
と同じく定義を書くことができます。
定義では値、型、例外、モジュール、モジュール型の名前を束縛することができます。
トップレベルシステムは束縛を行なうと、定義された名前の型と、値が存在すればそれを表示します。
end
open
指示子( 6.11 節「モジュール式 」 参照) や値式( 6.7 節「式 」 参照)を書くこともできます。
式は単純にそのまま評価され、束縛は行なわれず、その式の値が表示されます。
最後に、フレーズには #
で始まるトップレベル指示子もあります。
この指示子でトップレベルの動作を制御します。
指示子については 9.2 節「トップレベル指示子」 で説明します。
Unix | |
---|---|
トップレベルシステムは以下のように ocaml コマンドで起動します。 ocaml
コマンドラインで
カレントディレクトリに
トップレベルシステムには行編集機能はありませんが、 ledit や ocaml2、 rlwrap といった行エディタと組み合わせて使うのは簡単です(Caml Hump を参照してください)
また別の選択肢として、 Gnu Emacs から ocaml を起動すれば、 Emacs の編集機能をすべて使うことができます(
現在のフレーズの構文解析中、コンパイル中、評価中のいかなる時にでも ctrl+C で(より正確に言えば、 ocaml コマンドに
コマンドラインで ocaml に
スクリプトモードでは、スクリプトファイルの最初の行が #!/usr/local/bin/ocamlrun /usr/local/bin/ocaml |
Windows | |
---|---|
上記の Unix 版と同様に動作するテキストベースの ocaml.exe に加え、 GUI 版のトップレベルである ocaml.exe を使うこともできます。 Windows のファイルマネージャやプログラムマネージャから起動してください。 テキストウィンドウが表示され、その中でコマンドを入力、編集し、トップレベルからの応答を見ることができます。 |