OCaml を使うための準備

起動と終了

情報科学類計算機システムには、OCaml がインストールされているので、 特に何もセットアップしなくても OCaml を起動できる。 起動コマンドは、小文字で ocaml であり、 これを,shell が動いている端末から起動すると、OCaml の対話モードにはいる。 (なお,emacs から便利に使う方法は,後述する。)
% ocaml
        OCaml version 4.02.2

# 1 + 2 * 3;;  
- : int = 7
# print_string "abc\n";;
abc
- : unit = ()
#
対話モードでは、ユーザの入力に応じて OCaml処理系が計算を行い、 結果の値とその型を表示する。(計算結果だけでなく、型も表示するところが、OCaml らしいところである。)

# はプロンプトであり、上記の最初の例では、1 + 2 * 3;; が入力であり、 7 が結果(値)、int がその型である。2つ目の例では、print_string "abc\n";; が入力であり、その実行の際に abc という文字列が表示される。 (実際には abc という文字列のあとに改行コードが出力されている。) この場合、計算結果は無意味な値 () であり、その型は unit である。

この2つの計算だけでも、「型」とは何か、- (マイナス)の記号は何だろう、等々の疑問がわいてきたと思うが、 それらは後述するか各自調べてもらうことにして、 ここでは、処理系の終了方法をチェックしておこう。

OCamlを終了したい時は、 正式には #quit ;; と入力するが、もっと簡単に、 control-D (control キーを押しつつ "D" を押す)を入力してもよい。 なお、shell から control-Z を入力することにより、 OCaml処理系を中断することもできるが、 多数の OCaml処理系プロセスを中断したままでいると、計算機に大きな負荷をかけてしまうことがある。

もうちょっと良い起動方法

上記の方法でも OCaml を使えるが、起動後の入力を楽をするためには、次のように起動するとよい。
% rlwrap ocaml
        OCaml version 4.02.1

# 1 + 2 * 3;;  
- : int = 7
# 2 * 3;;  
- : int = 6
# (ここで、上向きの矢印キー、あるいは、下向きの矢印キーを何度か押してほしい)
前に入力した内容が、矢印キーの操作だけで再入力できることに気 付くだろう。emacsから OCaml を使う場合以外は、これは大変に便利な機能である。

なお、毎回 rlwrap ocaml とタイプするのが大変なので、 自分の bash設定ファイル(~/.bashrc など)に、 以下の1行を追加して、別名を設定するとよい。

(bashを使っている人は ~/.bashrc に以下の行を追加する)
  alias rocaml='rlwrap ocaml'    

(cshを使っている人は ~/.cshrc に以下の行を追加する)
  alias rocaml 'rlwrap ocaml'    
こうすると、次から rocaml とタイプするだけで、 rlwrap ocaml とタイプしたことになり、簡単に起動できる。
なお、ここでは、rocaml という名前に設定したが、もし、「今後、自分 は、必ず rlwrap つきで OCaml を起動する」ということなら、 alias ocaml='rlwrap ocaml'としてもよいだろう。

プログラムのファイルの作成と読み込み

上記のように、ちょっとしたテストの時には対話モードが良い。 一方、少し長いプログラムを書いて走らせるときには、 ファイルに書きこんで、 そのファイルを OCamlから読み込む(読み込みながら実行する)という方法が良い。 この読み込み操作も、対話モードから行う。 なお、OCamlプログラムを格納するファイルは、拡張子を .ml とすること。
# #use "myprogram.ml";;
# が2つ重なっていて読みにくいが、1つ目の # はOCamlプロンプトであり、そ のあとがユーザの入力である。つまり、 上記のものは、#use "myprogram.ml" というコマンドを入力したものである。 このようにすると、 (現在の directory の下にある)"myprogram.ml" というファイルを読み込み、上から順番に実行してくれる。 なお、絶対パスを記述することもできる。
# #use "/home/prof/kam/ocaml/myprogram.ml";;

このファイル myprogram.ml には、OCaml の式を何個でも記述してよい。 ただし、計算がエラーとなる式が途中に1つでもあると、読み込みを終了してしまう。

区切りとしての ;; についての注意. 対話モードで入力するときは、 1つの式を入力し終わるごとに ;; (セミコロンを2つ連続)をタイプする必要があるのに対して、 ファイルにたくさんの式を続けて書く時には、 (もし、OCaml処理系が区切りを自動的に認識できるなら) ;; で区切る必要はない。 この理由により、本実験で提供するソースコードでは、;; で区切っていない式たちもときどき登場する。 このようなコードを、対話モードで直接入力してテストしようと思ったら、 当然、;; で区切る必要があるので注意されたい。

emacs からの便利な使い方 (tuareg-mode)

emacs から OCamlプログラムの編集および実行をするために便利なツールとして、tuareg-mode というものがある。

上記の「使い方2」について補足する。

tuareg-mode の提供元は、 こちら である。 (このページの Released Files をクリックすると,最新版が 出てくる.2016/04/20現在,最新版のバージョンは 2.0.7 である.)

進んだ使い方


亀山 幸義