名前的と構造的の境界はどこにあるんだろうな
>>55のC++と>>65のOCamlを比べると
どちらも制限された型しか受け付けない抽象型だけど
型に直接の公開名はついていない
しかしC++の方は関数内のコードの構造を見るまでは型が制限されないのに対して
OCamlの方は先に関数の入り口の構造と指定で制限される
しかも関数内のコードの構造よりも強く制限された抽象型になってる
内部構造と無関係なresetの制約を受ける理由はresetという『名前』で指定しているためと解釈することもできる