module type S = sig end
type data
テーブルが保持する要素の型です。
type t
data
型の要素を保持するテーブルの型です。
val create : int -> t
create n
は空のウィークハッシュテーブルを新しく作って返します。初期状態のサイズは n
です。テーブルは必要に応じて大きくなります。
val clear : t -> unit
テーブルからすべての要素を取り除きます。
val merge : t -> data -> data
merge t x
は t
中で x
のインスタンスを見つけて返します。見つからなかったら t
に x
を追加して x
を返します。
val add : t -> data -> unit
add t x
は t
に x
を追加します。t
中に x
のインスタンスがすでにある場合、その後 find
や merge
を行って元の値が返るか今回入れた値が返るかは規定されません。
val remove : t -> data -> unit
remove t x
は t
から x
のインスタンスを 1 つ取り除きます。t
中に x
のインスタンスが 1 つもなかったら何位もしません。
val find : t -> data -> data
find t x
は t
から x
のインスタンスを見つけて返します。見つからなかったら例外 Not_found
を発生します。
val find_all : t -> data -> data list
find_all t x
は t
から x
のインスタンスをすべて見つけてリストにして返します。
val mem : t -> data -> bool
mem t x
は t
中に x
のインスタンスが 1 つでもあれば true
を返します。でなければ false
を返します。
val iter : (data -> unit) -> t -> unit
iter f t
は t
の要素をそれぞれ f
に適用します。その順番は規定されていません。f
が t
自体に変更を加えようとした場合の動作は規定されていません。
val fold : (data -> 'a -> 'a) -> t -> 'a -> 'a
fold f t init
は (f d1 (... (f dN init)))
を評価します。
d1 ... dN
は t
のすべての要素です。その順番は規定されていません。
f
が t
自体に変更を加えようとした場合の動作は規定されていません。
val count : t -> int
テーブルの要素数をカウントします。count t
は fold (fun _ n -> n+1) t 0
と同じ結果を返しますが、死んだ要素を解放する遅延がありません。
val stats : t -> int * int * int * int * int * int
テーブルの状態を返します。それぞれ、テーブルの長さ、エントリーの数、バケットの長さの合計、バケットの長さのうち最小のもの、中央値、最大のものです。