LoginSignup
6
4

More than 3 years have passed since last update.

[OCaml] MetaOCaml で IDE (Merlin) を使う方法と簡単な紹介

Last updated at Posted at 2019-11-21

MetaOCaml で merlin を使う方法について。(TL;DR) やり方は最後にあります。

スクリーンショット

こんな感じで MetaOCaml を使ってもモダンな感じで開発できるようになります。

Screen Shot 2019-11-21 at 9.05.35.png

Merlin: OCaml のための IDE基盤

Merlin (ocamlmerlin) は OCaml にモダンな IDE 機能を追加するインフラで、Emacs, Vim, Visual Studio Code など多くのエディタに対応しています。
エディタ上で型チェックしたり、コード補完、定義へのジャンプなど、ストレスなく OCaml でモダンに開発するための機能がひととおり揃っています。

MetaOCaml

MetaOCaml は多段階計算のための OCaml の拡張で、簡単にいえば OCaml でマクロを安全に(型付きかつ清潔に(hygiene)) 扱えるようになるような感じです。

インストール方法やイントロダクションはこちらの記事で詳しく解説されています: 

また、Qiita などで 日本の技術者界隈でも度々取り上げられている(?)ほか、プログラミング言語系の学会でも面白そうなお話が度々出てきています:

研究のお話としては、ほかにトップレベルカンファレンス POPL 2017 で Strymonas Streams: stream fusion, to completeness という多段階計算を使った高速なインメモリストリーム処理が MetaOCaml や Scala のライブラリとして実装されています。

MetaOCaml が OCaml 本体に取り込まれる流れ (リンク) もあるようで、今後が注目される OCaml 処理系のひとつです。

MetaOCaml + Merlin のインストール

こちらの記事 で紹介されているように OPAM で MetaOCaml の環境に切り替えて、さらに

opam install merlin

で Merlin をインストールできます。しかし、そのままでは .< ... >.~.( ... ) などの MetaOCaml 構文が構文エラーになってしまい、使えません。

Unbound value >.
Syntax error after unclosed struct, expecting expr

Merlin で MetaOCaml 拡張を有効化

幸い、Merlin には MetaOCaml 拡張があます。 現時点で最新の 4.07.1+BER の場合、 .merlin ファイル

EXT meta
FLG -open Trx

を書いておけば普通に使えるようになります (他のバージョンだと FLG は要らないかもしれません)。 やった!

.merlin の詳しい書き方はこちら

また、Dune で使えるようにする方法は ここ で議論されている方法でいけるのではないでしょうか。

それでは、ハッピー MetaOCaml ライフを!
(以上)

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4