module Make:
全順序型を受け取り、表のストラクチャの実装を作成するファンクタ。
type key
表のキーの型。
type +'a t
key から 'a 型への表の型。
val empty : 'a t
空の表。
val is_empty : 'a t -> bool
表が空かどうか検査します。
val mem : key -> 'a t -> bool
mem x m は m が x に対する束縛を格納していたら true を返し、そうでなければ false を返します。
val add : key -> 'a -> 'a t -> 'a t
add x y m は m の全束縛に x から y への束縛を追加したものを格納する表を返します。
x が m で既に束縛されていた場合には、以前の束縛は置き換えられます。
val singleton : key -> 'a -> 'a t
singleton x y は x から y への束縛のみを含む 1 要素の表を返します。
Since 3.12.0
val remove : key -> 'a t -> 'a t
remove x m は m の全束縛から x に関する束縛を除いたものを格納した表を返します。
val merge : (key -> 'a option -> 'b option -> 'c option) ->
'a t -> 'b t -> 'c t
merge f m1 m2 は、キーが m1 と m2 内のキーの部分集合であるような表を計算します。
束縛の存在、及び対応する値は、関数 f により決定されます。
Since 3.12.0
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
表同士の全順序関係。
最初の引数はふたつの表で同一のキーに対応づけられたデータの比較に使われます。
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
equal cmp m1 m2 は、表 m1 と m2 が等しいかどうか、すなわち、等しいキーを持ち、それに対応する値が等しいかどうかを検査します。
cmp は等しいキーに対応づけられたデータを比較する等価述語です。
val iter : (key -> 'a -> unit) -> 'a t -> unit
iter f m は f を表 m 中の全束縛に適用します。
f は第一引数としてキーを受け取り、第二引数として対応する値を受け取ります。
f に渡される束縛は、キー上の順序で昇順に渡されます。
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
fold f m a は (f kN dN ... (f k1 d1 a)...) を計算します。
ここで、 k1 ... kN は m 中の束縛におけるキーで(昇順)、
d1 ... dN はそれに対応する値です。
val for_all : (key -> 'a -> bool) -> 'a t -> bool
for_all p m は表中のすべての束縛が述語 p を満たすか検査します。
Since 3.12.0
val exists : (key -> 'a -> bool) -> 'a t -> bool
exists p m は表中の少なくともひとつの束縛が述語 p を満たすか検査します。
Since 3.12.0
val filter : (key -> 'a -> bool) -> 'a t -> 'a t
filter p m は m 中の束縛のうち、述語 p を満たす束縛だけから成る表を返します。
Since 3.12.0
val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
partition p m は表のペア (m1, m2) を返します。
ここで、 m1 は p の束縛のうち述語 p を満たすものだけを含み、
m2 は p の束縛のうち述語 p を満たさないものだけを含む表です。
Since 3.12.0
val cardinal : 'a t -> int
表に含まれる束縛の個数を返します。
Since 3.12.0
val bindings : 'a t -> (key * 'a) list
与えられた表に含まれるすべての束縛をリストにして返します。
結果のリストの要素は
Ord.compare で与えられる順序について昇順に整列しています。
ここで
Ord は
Map.Make の引数に与えられた引数です。
Since 3.12.0
val min_binding : 'a t -> key * 'a
与えられた表の中で(Ord.compare の順序について)最小の束縛を返します。
表が空のときは Not_found 例外が発生します。
Since 3.12.0
val max_binding : 'a t -> key * 'a
val choose : 'a t -> key * 'a
与えられた表から束縛をひとつ返します。
表が空の場合には Not_found 例外が発生します。
どの束縛が選択されるかは規定されていませんが、等しい表からは等しい束縛が選択されます。
Since 3.12.0
val split : key -> 'a t -> 'a t * 'a option * 'a t
split x m は 3 個組 (l, data, r) を返します。
ここで、 l は m 中の束縛で、キーが x よりも厳密に小さいものだけを含む表で、
r は m 中の束縛で、キーが x よりも厳密に大きいものだけを含む表です。
data は m に x に対する束縛がない場合は None で、
m が v を x に束縛していた場合には Some v になります。
Since 3.12.0
val find : key -> 'a t -> 'a
find x m は m における x の現在の束縛を返します。
そのような束縛がない場合には Not_found 例外が発生します。
val map : ('a -> 'b) -> 'a t -> 'b t
map f m は m と同じ定義域で(訳注: キーが同じで)、 m 中のすべての束縛の値 a が f を a に適用した結果で置き換えられた表を返します。
f に渡される束縛はキー上の順序について昇順で渡されます。
val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
Map.S.map と同じですが、表の各束縛について、関数
f は引数としてキーとそれに対応する値の両方を受け取ります。