ocamlc -pack

-packなるオプションがあることを知った。

a.cmoとb.cmoからなるライブラリc.cmaを作るときに、ocamlc -a a.cmo b.cmo -o c.cmaとするとモジュール名がAとBになってしまうので、名前空間的に気に入らないと思っていたのだが、実はocamlc -pack c.cmo a.cmo b.cmoとすればいいのだった*1。C.AとC.Bになってくれるので、AとかBとかにParserとかLexerとか、一般的な名前を付けることができる。バンザイ!

ずっとできないと思っていたのでどうすればいいのかここに書こうか迷っていて、書いたらきっと親切な誰かに突っ込まれて恥ずかしい思いをするんだろうなぁ、と思っていたのだが、書かなくてよかった。と考えるべきか、書いておけば、もっと早く教えてもらえたかもしれないと考えるべきか。

*1:これ、-aってつけるのはダメなのかな…