- 1. 背景
- 2. 環境
- 3. OCamlのインストール
- 4. duneのインストール
- 5. utopのインストール
- 6. デバッガーをインストール
- 7. プロジェクトの作成
- 8. デバッグ確認
- 9. ちなみに
- 10. 参考
1. 背景
最近はRustを個人的にインプットする事をしていて、Rustで使われるenum
はOCamlなどの関数型言語に影響を受けているという記述を見て、今まで触れてこなかった関数型言語にも手を出してみようという考えに至った。
丁度読みたかった本もOCamlで書かれているということもあり、良い機会だったのでVS Codeでデバッグ可能なOCamlの開発環境をローカルPCに構築してみた。
2. 環境
- MacBook Pro(Intelチップ)
- macOS Big Sur 11.6
- fish shell 3.2.0
- Homebrew 3.3.3
- VS Code
3. OCamlのインストール
ここは以下公式にある通り進める。Macのパッケージ管理にはHomebrewを使用し、OCamlのパッケージマネージャをインストールする。
❯❯❯ brew install opam
opamの初期化を行う。ここでOCamlがインストールされる。
opamについて詳細を知りたいのならopam --help
やら公式を見ると良い。
❯❯❯ opam init # デフォルトシェルを判断してくれるからyしておく
バージョンを確認してOCamlインストール出来たことを確認。
❯❯❯ ocaml -version The OCaml toplevel, version 4.12.0
4. duneのインストール
OCamlのビルドシステムをインストールする。
❯❯❯ opam install dune
5. utopのインストール
興味本位でutopもインストールする。本題とは関係ないところなので、これはスキップしても良い。
❯❯❯ ocaml install utop
utopを動かして見るとこんな感じ。
6. デバッガーをインストール
OCamlのデバッガーをインストールする。
❯❯❯ opam install earlybird
VS CodeでOCamlを使用するので、以下のOCaml Platformの拡張機能もインストール。
これに合わせてocaml-lsp-serverも必要となるのでインストール。
❯❯❯ opam install ocaml-lsp-server
7. プロジェクトの作成
duneを使用してOCamlのプロジェクトを作成する。
# 任意の場所で良い ❯❯❯ dune init proj hello_ocaml Success: initialized project component named hello_ocaml ❯❯❯ cd hello_ocaml/ # VS Codeを開く ~/hello_ocaml ❯❯❯ code .
8. デバッグ確認
VS Codeを開いたらbin/main.ml
に以下を記載。
let () = print_endline "Hello, World!"
ブレークポイントで止まるか確かめたいので、動作するなら正直何でも良い。
書いたらbin/main.ml
ファイル内でデバッグしたい箇所にブレークポイントを追加し、バイトコードにコンパイルする。
バイトコード以外だとearlybirdでデバッグはどうやら出来ない模様。
~/hello_ocaml ❯❯❯ ocamlc -g bin/main.ml
出力されたa.out
ファイルを右クリックすると、メニューにStart an OCaml Debug Session
が表示されるので選択する。上手くいくと以下のようにデバッグが可能になる。
実はdune build
のコマンドでも試したが、この場合にtest
ディレクトリのファイルは.bc
ファイルで出力された。しかし、bin/main.ml
についてのデバッグ可能なファイルが見当たらなかったためocamlc
で対応した。
9. ちなみに
読みたかった本はこちらになります。
※読み進めるにあたって当記事の環境構築をする必要はありません。