(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