これはML Advent Calendar 2017の21日目の記事です。 OCamlで書いている自作言語の中間表現の紹介をしようと思ったのですが中途半端なところまでしか作れなかったので、今回はOCamlで書かれたErlangのBEAM FormatとErlang External Term FormatのパーサであるObeam(御-BEAM)の紹介をしたいと思います。 人間がErlangを書く際、Dialyzerという静的解析ツールにお世話になることが多いと思います。主に事前に静的に型検査を行える便利なツールで、動的型付き言語に後から静的型検査を追加したということで既存の型指定がないコードもなるべく解析できるような型システムを積んでいます (オススメ記事→ Dialyzer の型推論アルゴリズムについて)。 これが非常に重たくてツラいというのがあります。OTP20でかなり改善された気がす
![OCamlでErlangのBEAMをパースするライブラリの話 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/cbc1f0f7d57c0fbd7dc87d81bc07542c36a83eff/height=288;version=1;width=512/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fqiita-fb-2887e7b4aad86fd8c25cea84846f2236.png)