module Make:
全順序型を受け取り集合のストラクチャの実装を作成するファンクタ。
type
elt
集合の要素の型。
type
t
集合の型。
val empty : t
空集合。
val is_empty : t -> bool
集合が空であるかどうか検査します。
val mem : elt -> t -> bool
mem x s
は x
が集合 s
に属するかどうか検査します。
val add : elt -> t -> t
add x s
は s
の要素すべてに加えて x
を要素とする集合を返します。
x
が既に s
に含まれていた場合には s
がそのまま返ります。
val singleton : elt -> t
singleton x
は x
のみを要素とする集合を返します。
val remove : elt -> t -> t
remove x s
は s
の要素すべてから x
を除いたものを要素とする集合を返します。
s
に x
が含まれない場合には s
がそのまま返ります。
val union : t -> t -> t
和集合。
val inter : t -> t -> t
積集合
val diff : t -> t -> t
差集合。
val compare : t -> t -> int
集合同士の全順序。
集合の集合を作る場合の順序関数として使うことができます。
val equal : t -> t -> bool
equal s1 s2
は集合 s1
と s2
が等しいかどうか、すなわち、等しい要素を要素とするかを検査します。
val subset : t -> t -> bool
subset s1 s2
は集合 s1
が s2
の部分集合であるか検査します。
val iter : (elt -> unit) -> t -> unit
iter f s
は s
の全要素に順番に f
を適用します。
f
は s
の要素に対して、要素の型上の順序において昇順に適用されます。
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
fold f s a
は (f xN ... (f x2 (f x1 a))...)
を計算します。
ここで、 x1 ... xN
は s
の要素を昇順に並べたものです。
val for_all : (elt -> bool) -> t -> bool
for_all p s
は集合の要素がすべて述語 p
を満たすか検査します。
val exists : (elt -> bool) -> t -> bool
exists p s
は集合の要素が少なくともひとつは述語 p
を満たすか検査します。
val filter : (elt -> bool) -> t -> t
filter p s
は s
の要素で述語 p
を満たすものだけから成る集合を返します。
val partition : (elt -> bool) -> t -> t * t
partition p s
は集合の対 (s1, s2)
を返します。
ここで s1
は s
の要素で述語 p
を満たすものの集合であり、
s2
は p
を満たさないものの集合です。
val cardinal : t -> int
集合の要素数を返します。
val elements : t -> elt list
与えられた集合の全要素のリストを返します。
戻り値のリストは順序関係
Ord.compare
に関して昇順に整列しています。
ここで
Ord
は
Set.Make
に与えられた引数です。
val min_elt : t -> elt
集合の要素のうち、 Ord.compare
の順序に関して最小の要素を返します。
集合が空の場合には Not_found
例外が発生します。
val max_elt : t -> elt
val choose : t -> elt
与えられた集合の要素をひとつ返します。
集合が空の場合には Not_found
例外が発生します。
どの要素が選択されるかは規定されていませんが、等しい集合に対しては等しい要素が選択されます。
val split : elt -> t -> t * bool * t
split x s
は三つ組 (l, present, r)
を返します。
l
は s
の要素で x
よりも厳密に小さい要素から成る集合で、
r
は s
の要素で x
よりも厳密に大きい要素から成る集合です。
present
は s
に x
と等しい要素が含まれない場合には false
、
含まれる場合には true
になります。