7.15 モジュールの型の復元

(OCaml 3.12 〜)

module-type ::= ...
| module type of module-expr

module type of module-expr 構文は、モジュール式 module-expr について推論されたモジュール型(シグネチャないしはファンクタ型)に展開されます。

典型的には、次の例のように、シグネチャの include とともに使い、既存のモジュールのシグネチャに展開させます。

module type MYHASH = sig
  include module type of Hashtbl
  val replace: ('a, 'b) t -> 'a -> 'b -> unit
end
    

シグネチャ MYHASH はモジュール Hashtbl のすべてのフィールドに加え、新たなフィールドとして replace を要素とします。このシグネチャに対応する実装は、ストラクチャの include を使って簡単に実現することができます。

module MyHash : MYHASH = struct
  include Hashtbl
  let replace t k v = remove t k; add t k v
end