% 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処理系プロセスを中断したままでいると、計算機に大きな負荷をかけてしまうことがある。
% 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 とタイプしたことになり、簡単に起動できる。
# #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処理系が区切りを自動的に認識できるなら) ;; で区切る必要はない。 この理由により、本実験で提供するソースコードでは、;; で区切っていない式たちもときどき登場する。 このようなコードを、対話モードで直接入力してテストしようと思ったら、 当然、;; で区切る必要があるので注意されたい。
なお、xxx.mlというファイルを編集するとき、TAB キーを押すと、適切なインデントをしてくれる。
上記の「使い方2」について補足する。
OCaml toplevel to run: ocamlそこで、単に return key を押せばよい。 それにより、emacs の上で、ocaml を実行するバッファが1つ作成される。 (*ocaml-toplevel*という名前になる。) このバッファは、emacsを終了するまで残り、OCaml式を評価するたびに、どん どん計算結果がたまっていく。
OCamlの対話モードでの実行速度は十分速いので、 本実験の範囲では、対話モードだけが使えればまったく問題ない。 しかし、実行速度をさらに上げたいときは、 コンパイラを使ってコンパイルすることもできる。
コンパイルするコマンドは ocamlc である。 ネイティブコンパイラを使ってコンパイラする場合は ocamlopt である。 これらの詳細については、参考文献を参照せよ。
OCamlの処理系は、Linux, MacOS などの Unix系統のOSの上ではごく簡単に動くが、 Windows でも動作させることができる。 興味をもった人は、是非、自分の持っているPC等にインストールして楽しんでほしい。 必要な情報は、 OCaml の開発元のページ を見るか、あるいは、インターネットで、インストール方法のガイドが書いてあるページを探して欲しい。