MinCamlのプリミティブ

がAdd of t * tとかNeg of tとか別々になっているのは、プリミティブごとにarityが違うので、Prim of op * t listとかにすると、Prim(Neg, [e1; e2])とか書けてしまうためです。一つにまとめられるメリットとどちらが大きいか、僕も迷ったのですが。FAQっぽいので一応の参考まで。

ちなみにプリミティブと関係はありませんが、多相バリアントを使うと、もう少しまとめられるところもあるかも(KNormal.tとClosure.tなど)。