(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