% ssh abc@azalea01.coins.tsukuba.ac.jpとすると、azalea01 という coinsマシンに遠隔ログインできる。 (azalea01 のところは azalea02 などでもよい。) 遠隔ログインを終了したら、exit とするとよい。
OCaml処理系の起動コマンドは、小文字で ocaml である。 (なお,emacs エディタを立ちあげて、その中から OCamlを 便利に使う方法があるので、後述する。)
% ocaml OCaml version 4.13.1 # 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処理系プロセスを中断したままでいると、計算機に大きな負荷をかけてしまうことがある。
# #use "myprogram.ml";;# が2つ重なっていて読みにくいが、1つ目の # はOCamlプロンプトであり、そ のあとがユーザの入力である。つまり、 上記のものは、#use "myprogram.ml" というコマンドを入力したものである。 このようにすると、 (現在の directory の下にある)"myprogram.ml" というファイルを読み込み、上から順番に実行してくれる。 なお、絶対パスを記述することもできる。
# #use "/home/prof/kam/ocaml/myprogram.ml";;
ファイルの中には、OCaml の式を何個でも記述してよい。 ただし、読み込みながら実行していくので、 途中でエラーとなる式があると、そこで読み込みを終了してしまう。
区切りとしての ;; についての注意. 対話モードで入力するときは、 1つの式を入力し終わるごとに ;; (セミコロンを2つ連続)をタイプする必要があるのに対して、 ファイルにたくさんの式を続けて書く時には、 (もし、OCaml処理系が区切りを自動的に認識できるなら) ;; で区切る必要はない。 この理由により、本実験で提供するソースコードでは、;; で区切っていない式たちもときどき登場する。 このようなコードを、対話モードで直接入力してテストしようと思ったら、 当然、;; で区切る必要があるので注意されたい。
なお、xxx.mlというファイルを編集するとき、TAB キーを押すと、適切なインデントをしてくれる。
OCamlの対話モードでの実行速度は十分速いので、 本実験の範囲では、対話モードだけが使えればまったく問題ない。 しかし、実行速度をさらに上げたいときは、 コンパイラを使ってコンパイルすることもできる。
コンパイルするコマンドは ocamlc である。 ネイティブコンパイラを使ってコンパイラする場合は ocamlopt である。 これらの詳細については、参考文献を参照せよ。
Debian Linux or Ubuntu Linux の場合 % apt install opam (あるいは apt-get install opam) % opam init (初期化、結構時間がかかる) (メッセージの最後で以下のコマンドを実行せよ、と言われるので、そのまま タイプする。以下のものは一例であり、違うものが表示されるかもしれない。) % eval $(opam env --switch=default)
MacOS の場合 % brew install opam % opam init (結構時間がかかる) (メッセージの最後で以下のコマンドを実行せよ、と言われるので、そのまま タイプする。以下のものは一例であり、違うものが表示されるかもしれない。) % eval $(opam env --switch=default)LinuxでもMacOSでも、上記の後、ocaml とやって動けば成功である。 opamは、OCaml処理系本体以外にも、OCaml関連の様々な便利なツールをインス トールすることができる。ただし、調子にのって、大量にのせてしまうと、 ディスクスペースを使いすぎるかもしれない。 opamでインストールされたものは、~/.opam の下に置かれる。 これ以外の情報は、 OCaml の開発元のページ を見るか、あるいは、インターネットで、インストール方法のガイドが書いてあるページを探して欲しい。
Windows上でOCamlを動かしたい場合、WSL などのLinux環境を使えば上記のようにOCamlをインストールできる。ここでは、VMやWSLを使わずにOCamlを Windowsにのせる方法を記述する。
タスクバーの検索ボックスに(あるいは「WindowsキーとQ」を同時に押して表示された検索窓に)
powershell
を入力して、シェルを起動する。うまく行かない場合はマイクロソフトの
この記事
を参照すること。
ネットワークに接続して、PowerShellで下記のコマンドを実行する。コマンドは対話形式なので、 表示される項目を入力する(デフォルト値で良い場合、単にEnterキーを押す)。
% Invoke-Expression "& { $(Invoke-RestMethod https://raw.githubusercontent.com/ocaml/opam/master/shell/install.ps1) }"
次に、下記のコマンドを入力してOCamlをインストールする。デフォルトでは、このコマンドは必要な Linux環境(cygwin, gitなど)も一緒にインストールする。そういうプログラムをインストール したくない場合(既にインストールされている場合)、対話モードで表示される項目で調整すること。
% opam init # (結構時間がかかる)
下記のコマンドを実行する。このコマンドは毎回新しいPowerShellを起動する際に 実行する必要がある。
% (& opam env --switch=default) -split '\r?\n' | ForEach-Object { Invoke-Expression $_ }
上記の後、ocaml
をタイプして動けば成功である。なお、
手順(4)を毎回やるのが面倒な人は、
そのコマンドをPowerShellのプロファイルに書き込んで、
PowerShellを起動する際に自動的に実行するようにできる。
具体的には、PowerShellに
% echo $PROFILE
を実行して、出力されたパス(ファイル名を含む)のファイルを作成する。そのファイルに手順(4)の コマンドを書き込めば良い。次からは、PowerShellを起動する毎に環境変数を設定する必要がなくなる。
参照リンク:OCaml本家:How to install opam
亀山 幸義