miniC 言語処理系の使い方への補足 2009/05/18 本日使うのは Version 3.0 処理系なので、 cp ~kam/minic/main.cmi tmp cp ~kam/minic/*.c tmp cd tmp という操作をもう一度やってほしい。ここで tmp というのは 前回の演習の際に、自分の home directory の下に作った miniC のための directory名であるので、違う名前を使った人もいる かもしれない。そのあとで ~kam/minic/minic として起動する、という点は前回と一緒である。 Version 1.0 との差は showコマンドが使えるようになったこと である。show の使い方は ex4.c などの例題ファイルを見てほしい。 (それ以外に return を、関数の最後に書かないといけない、という 不要な制限を撤廃した、等の変化がある。) --------------------------------------------------------------------- OCaml 言語処理系の使い方 2009/05/18 システム起動方法: UNIX プロンプトで、ocaml とする。 OCamlプログラム実行方法: OCaml プログラムを、たとえば ex1.ml というファイルに書 ききこんで、# というシステムプロンプトの後に、 #use "ex1.ml" ;; と入力する。ここで 最後に ;; (セミコロン2つを連続する) が 必要である。また、#use の最初の # はプロンプトではなく、 プロンプトの後に入力する。なお、読みこむファイルは 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/ex?.ml (? は 1,2 のいずれか) OCaml の構文、意味論: 講義時に配布したMiniML の資料を参照してほしい。 授業ホームページからも取得できる。 http://logic.cs.tsukuba.ac.jp/~kam/lecture/plm2009/ 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) ;; と全く同じである.授業では言わなかったが,後者よりは 前者の方が直感的にわかりやすい定義なので,普通は 前者のように関数を定義する. (以上)