OCaml 言語処理系の使い方 システム起動方法: UNIX プロンプトで、ocaml とする。 OCamlプログラム実行方法: OCaml プログラムを、たとえば ex1.ml というファイルに書 ききこんで、# というシステムプロンプトの後に、 #use "ex1.ml" ;; と入力する。ここで 最後に ;; (セミコロン2つを連続する) が 必要である。また、#use の最初の # はプロンプトではなく、 プロンプトの後に入力する。(つまり、見た目には、 # #use "ex1.ml";; という具合いで、# が2つ現れる。) なお、読みこむファイルは OCaml 処理系を起動した場所に置かなければな らない。 たとえば、~kam/ocaml/ex1.ml を読みこみたいときは、 #use "/home1/prof/kam/ocaml/ex1.ml" ;; とするか、あるいは、OCaml起動前に Unixで、 cp ~kam/ocaml/ex1.ml . としておいてから、 #use "ex1.ml" ;; とする。なお、最初のパターンで、 #use "~kam/ocaml/ex1.ml";; とやるのは (~ を OCaml が理解しないので)駄目のようだ。 上記を実行したあとに、続けて別のファイルを読みこめる。 #use "ex2.ml";; なお、ex1.ml 等の中身をいきなり打ちこんでもよい。 1 + 2 ;; 1つの式を入力しおわったら、;; を入力すること。 システム終了方法: C-d (control-d)を押す。 OCaml プログラム例題: ~kam/ocaml/*.ml OCaml の構文、意味論: 講義時に配布したMiniML の資料を参照してほしい。 授業ホームページからも取得できる。 http://logic.cs.tsukuba.ac.jp/~kam/lecture/plmXXXX/ (XXXX は授業の年、たとえば 2011) OCaml についての資料: google OCaml とすればよい。 フランスのINRIA に本家があるが、日本語の翻訳も結構ある。 後で追加した部分: MiniML と OCaml の違いについて 基本的に MiniML はOCaml のサブセットであるが, print x という命令だけは,MiniML 独自のものである. そこで,OCaml で,MiniMLの print x という式を 実行したいときは,その前に, let print s = print_string (string_of_int s) ;; として,print 関数を定義してほしい.(これだと print の引数 s が整数のときしか印刷できないが) なお,上記の定義は, let print = fun s -> print_string (string_of_int s) ;; と全く同じである.授業では言わなかったが,後者よりは 前者の方が直感的にわかりやすい定義なので,普通は 前者のように関数を定義する. (以上)