久しぶりにocamlのuser's manualを眺めてた。そんな事もできるのかーという構文発見。

其の1 ローカルモジュール
#let module A = struct let add x = x + 1 end in A.add 3;;
- : int = 4

其の2 開いて閉じる
#type t = [ `A of int | `B of bool];;
type t = [ `A of int | `B of bool ]
# type u = private [< t > `A];;
type u = private [< t > `A ]

private row応用範囲広すぎ。