この科目では実装言語として 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 として設定が用意されている。