Previous Up Next

5.19  Module Set

Module type OrderedType
module type OrderedType = sig

type (#'a:level) t

val compare : 'a t -> 'a t -> 'a int

end

Module type S
module type S = sig

type (#'a:level) elt

type (#'a:level) t

val empty : 'a t

val is_empty : 'a t -> 'a bool

val mem : 'a elt -> 'a t -> 'a bool

val add : 'a elt -> 'a t -> 'a t

val singleton : 'a elt -> 'a t

val remove : 'a elt -> 'a t -> 'a t

val union_ : 'a t -> 'a t -> 'a t

val inter_ : 'a t -> 'a t -> 'a t

val diff : 'a t -> 'a t -> 'a t

val compare : 'a t -> 'a t -> 'a int

val equal : 'a t -> 'a t -> 'a bool

val subset : 'a t -> 'a t -> 'a bool

val iter : ('a elt -{'b | 'c | 'b}-> 'd) -> 'a t -{'b | 'c |}-> unit
           with 'a, content('c) < 'b

val fold : ('a elt -{'b | 'c | 'd}-> 'e -{'f | 'c | 'g}-> 'h) ->
           'a t -> 'h -{'i | 'c |}-> 'h
           with 'a, content('c), 'd, 'g, 'i < 'f
           and  'a, content('c), 'd, 'i < 'b
           and  'a, 'd, 'g < level('e)
           and  'h < 'e
           and  'a, 'd, 'g < level('h)

val for_all : ('a elt -{'b | 'c | 'd}-> 'e bool) ->
              'a t -{'b | 'c |}-> 'e bool
              with 'a, 'd < 'e
              and  'a, content('c), 'd < 'b

val exists : ('a elt -{'b | 'c | 'd}-> 'e bool) ->
             'a t -{'b | 'c |}-> 'e bool
             with 'a, 'd < 'e
             and  'a, content('c), 'd < 'b

val filter : ('a elt -{'b | 'c | 'd}-> 'e bool) -> 'a t -{'b | 'c |}-> 'e t
             with 'a, 'd < 'e
             and  'a, content('c), 'd < 'b

val partition : ('a elt -{'b | 'c | 'd}-> 'e bool) ->
                'a t -{'b | 'c |}-> 'e t * 'e t
                with 'a, 'd < 'e
                and  'a, content('c), 'd < 'b

val cardinal : 'a t -> 'a int

val elements : 'a t -> ('a elt, 'a) list

val min_elt : 'a t -{'b | Not_found: 'b |}-> 'a elt
              with 'a < 'b

val max_elt : 'a t -{'b | Not_found: 'b |}-> 'a elt
              with 'a < 'b

val choose : 'a t -{'b | Not_found: 'b |}-> 'a elt
             with 'a < 'b

end

module Make : functor (Ord : OrderedType) -> S with type 'a elt = 'a Ord.t



Previous Up Next