この科目では実装言語として OCaml を使用する。演習問題を進めるためには、自分のマシンに OCaml プログラムの開発環境を整えることが必須である。以下では、OCaml の開発環境をセットアップする方法を説明する。
このガイドでは opam 2.2以上を前提としている。2.2よりも古い opam バージョンをインストールしている場合は更新する必要がある。
bash -c "sh <(curl -fsSL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh)"
Invoke-Expression "& { $(Invoke-RestMethod https://raw.githubusercontent.com/ocaml/opam/master/shell/install.ps1) }"
~/.opam
に作成される。~/.opam/<switch>
に作成される。_opam
サブディレクトリに OCaml 関連ファイルやパッケージが入る。opam init --bare --no-setup
opam init
コマンドを実行し、opam の初回セットアップを実行する。
--bare
--no-setup
git clone git@github.com:kuis-isle3sw/IoPLMaterials.git
cd IoPLMaterials
SSH キーを使った方法でリポジトリをクローンすることが出来ない場合はこちら を参照。
direnv は現在のディレクトリに基づいて環境変数を設定出来るツールであり、opam スイッチの管理や、プロジェクト固有の環境のセットアップに特に役立つ。
.envrc
を許可
direnv allow
を実行。.envrc
を許可するまで direnv は .envrc
の中身を実行しない。
必須のツールではないが、これがあると作業が楽になる。
- Zed などの一部エディタでは OCaml 拡張機能 をインストールしても LSP が機能しないことがある。
- このような場合には必要なパッケージを全てインストールしていることを確認した上で
opam exec -- zed .
とする必要がある。
opam switch create . 5.2.0 --no-install
opam switch create [スイッチ名] [コンパイラ]
コマンドを実行し、opam ローカルスイッチを作成する。この時、スイッチ名に絶対または相対のディレクトリを指定すると opam ローカルスイッチが作成される。
--no-install
opam install
コマンドを介してインストールするため、このオプションを追加することによって OCaml コンパイラのみをインストールするようにする。詳細は man opam-switch
を実行するとよい。
opam install . --deps-only --with-dev-setup
opam install [パッケージ名]
を実行し、必要な opam パッケージをインストールする。この際、パッケージ名に *.opam
ファイル、もしくは *.opam
ファイルを含むディレクトリを指定する事も可能であり、この場合はディレクトリ内に存在する *.opam
ファイルの中身に基づいて opam パッケージがインストールされる。
--deps-only
--with-dev-setup
--with-doc
や --with-test
などのオプションなども存在するが、ここでは必要ない。
詳細は man opam-install
を実行するとよい。
dune build
opam exec -- dune build
推奨するのは VSCode と、その拡張機能の OCaml Platform の組み合わせである。
クローンしたリポジトリに移動し、次のコマンドを実行すると VSCode が起動される。
事前に
.vscode/settings.json
に次のような設定ファイルを置いておく必要がある。{ "ocaml.sandbox": { "kind": "opam", "switch": "${workspaceFolder:IoPLMaterials}" } }
code .
code
コマンドが存在しないとエラーが出る場合はこちらを参照。
.ocamlformat
ファイルを用意するとインデント等が自動的に整理されてよい。
textDocument/formatting
を介して実行されるため、各種エディタの設定で保存時にフォーマットするようにすると尚よい。
editor.formatOnSave
として設定が用意されている。