本実験で作成するインタプリタプログラムは,以下の 7 つのファイルから構成される.
最初に扱う ML1 インタプリタのための7つのファイルに加え,インタプ リタをコンパイルするための Makefile を http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/class/isle4/src/に置い てある.これら 7 つのファイルを同じディレクトリに保存し,どれかひとつ の .ml ファイルを Emacs に読み込む. そのバッファでC-c C-c とす ると,コンパイルのコマンドを聞かれるので, make depend とする.この 作業は初回のみ(正確にはファイルが増えた時もしくはmake cleanを行なっ た後)行えばよい. 次に,C-c C-c make -k とする. すると,ソース ファイルのあるディレクトリに miniml という実行形式ファイルが生成される. (M-x shellでシェルモードに 入って) miniml を起動すると #というプロ ンプトが現れるので, MLプログラムを打つと結果が表示される.
> miniml # x;; val - = 10 # x + 3;; val - = 13
(起動時に大域変数 x の値は 10 になっている.) ソースを変更したあとは,C-c C-c make -k でコンパイルすることにな る.コンパイル時にエラーが発生した場合は M-x next-error とすることで, エラーの発生した場所にカーソルが移動する.
実行可能ファイルとなった Objective Caml プログラムをデバッグするには ocamldebug を使用する方法(Objective Camlマニュアル16章参照)と,インタラクティ ブコンパイラ ocaml にプログラムを構成する各モジュールをロードして, テストする方法がある.ocaml を起動する際に
ocaml -I<モジュールのあるディレクトリのパス> foo.cmo bar.cmo ...
のようにオブジェクトファイルを指定すると,Foo, Bar という モジュールが利用できるようになるので,トップレベルでテストする ことが可能になる.