1(* ========================================================================= *) 2(* A MULTISET DATATYPE FOR ML *) 3(* Copyright (c) 2002-2004 Joe Hurd. *) 4(* ========================================================================= *) 5 6signature mlibMultiset = 7sig 8 9type 'a mset 10 11val empty : ('a * 'a -> order) -> 'a mset 12val insert : 'a * int -> 'a mset -> 'a mset 13val count : 'a mset -> 'a -> int 14val union : 'a mset -> 'a mset -> 'a mset 15val compl : 'a mset -> 'a mset 16val subtract : 'a mset -> 'a mset -> 'a mset 17val subset : 'a mset -> 'a mset -> bool 18val equal : 'a mset -> 'a mset -> bool 19val compare : 'a mset * 'a mset -> order option 20val sign : 'a mset -> order option (* compare to empty *) 21val app : ('a * int -> unit) -> 'a mset -> unit 22val foldl : ('a * int * 'b -> 'b) -> 'b -> 'a mset -> 'b 23val foldr : ('a * int * 'b -> 'b) -> 'b -> 'a mset -> 'b 24val exists : ('a * int -> bool) -> 'a mset -> bool 25val all : ('a * int -> bool) -> 'a mset -> bool 26val map : ('a * int -> int) -> 'a mset -> 'a mset 27val nonzero : 'a mset -> int 28val to_list : 'a mset -> ('a * int) list 29val pp_mset : 'a mlibUseful.pp -> 'a mset mlibUseful.pp 30 31end 32