| 1 |
module type ARG =
|
| 2 |
sig
|
| 3 |
type 'a t
|
| 4 |
val equal: 'a t -> 'a t -> bool
|
| 5 |
val hash: 'a t -> int
|
| 6 |
val compare: 'a t -> 'a t -> int
|
| 7 |
end
|
| 8 |
|
| 9 |
module type ARG0 =
|
| 10 |
sig
|
| 11 |
type t
|
| 12 |
val equal: t -> t -> bool
|
| 13 |
val hash: t -> int
|
| 14 |
val compare: t -> t -> int
|
| 15 |
end
|
| 16 |
|
| 17 |
module type S =
|
| 18 |
sig
|
| 19 |
type 'a elem
|
| 20 |
type 'a t
|
| 21 |
val equal: 'a t -> 'a t -> bool
|
| 22 |
val hash: 'a t -> int
|
| 23 |
val compare: 'a t -> 'a t -> int
|
| 24 |
|
| 25 |
external get: 'a t -> 'a elem list = "%identity"
|
| 26 |
|
| 27 |
val singleton: 'a elem -> 'a t
|
| 28 |
val iter: ('a elem -> unit) -> 'a t -> unit
|
| 29 |
val filter: ('a elem -> bool) -> 'a t -> 'a t
|
| 30 |
val exists: ('a elem -> bool) -> 'a t -> bool
|
| 31 |
val fold: ('b -> 'a elem -> 'b) -> 'b -> 'a t -> 'b
|
| 32 |
val pick: 'a t -> 'a elem option
|
| 33 |
val length: 'a t -> int
|
| 34 |
|
| 35 |
val empty: 'a t
|
| 36 |
val is_empty: 'a t -> bool
|
| 37 |
val from_list : 'a elem list -> 'a t
|
| 38 |
val add: 'a elem -> 'a t -> 'a t
|
| 39 |
val remove: 'a elem -> 'a t -> 'a t
|
| 40 |
val disjoint: 'a t -> 'a t -> bool
|
| 41 |
val cup: 'a t -> 'a t -> 'a t
|
| 42 |
val split: 'a t -> 'a t -> 'a t * 'a t * 'a t
|
| 43 |
(* split l1 l2 = (l1 \ l2, l1 & l2, l2 \ l1) *)
|
| 44 |
val cap: 'a t -> 'a t -> 'a t
|
| 45 |
val diff: 'a t -> 'a t -> 'a t
|
| 46 |
val subset: 'a t -> 'a t -> bool
|
| 47 |
val map: ('a elem-> 'b elem) -> 'a t -> 'b t
|
| 48 |
val mem: 'a t -> 'a elem -> bool
|
| 49 |
|
| 50 |
val check: 'a elem list -> unit
|
| 51 |
|
| 52 |
module Map: sig
|
| 53 |
type ('a,'b) map
|
| 54 |
external get: ('a,'b) map -> ('a elem * 'b) list = "%identity"
|
| 55 |
val empty: ('a,'b) map
|
| 56 |
val iter: ('b -> unit) -> ('a,'b) map -> unit
|
| 57 |
val is_empty: ('a,'b) map -> bool
|
| 58 |
val singleton: 'a elem -> 'b -> ('a,'b) map
|
| 59 |
val assoc_remove: 'a elem -> ('a,'b) map -> 'b * ('a,'b) map
|
| 60 |
val remove: 'a elem -> ('a,'b) map -> ('a,'b) map
|
| 61 |
val merge: ('b -> 'b -> 'b ) -> ('a,'b) map -> ('a,'b) map -> ('a,'b) map
|
| 62 |
val merge_elem: 'b -> ('a,'b) map -> ('a,'b) map -> ('a,'b) map
|
| 63 |
val union_disj: ('a,'b) map -> ('a,'b) map -> ('a,'b) map
|
| 64 |
val diff: ('a,'b) map -> 'a t -> ('a,'b) map
|
| 65 |
val from_list: ('b -> 'b -> 'b ) -> ('a elem * 'b) list -> ('a,'b) map
|
| 66 |
val from_list_disj: ('a elem * 'b) list -> ('a,'b) map
|
| 67 |
|
| 68 |
val map_from_slist: ('a elem -> 'b) -> 'a t -> ('a,'b) map
|
| 69 |
val collide: ('b -> 'c -> unit) -> ('a,'b) map -> ('a,'c) map -> unit
|
| 70 |
val map: ('b -> 'c) -> ('a,'b) map -> ('a,'c) map
|
| 71 |
val mapi: ('a elem -> 'b -> 'c) -> ('a,'b) map -> ('a,'c) map
|
| 72 |
val constant: 'b -> 'a t -> ('a,'b) map
|
| 73 |
val num: int -> 'a t -> ('a,int) map
|
| 74 |
val map_to_list: ('b -> 'c) -> ('a,'b) map -> 'c list
|
| 75 |
val mapi_to_list: ('a elem -> 'b -> 'c) -> ('a,'b) map -> 'c list
|
| 76 |
val assoc: 'a elem -> ('a,'b) map -> 'b
|
| 77 |
val assoc_present: 'a elem -> ('a,'b) map -> 'b
|
| 78 |
val compare: ('b -> 'b -> int) -> ('a,'b) map -> ('a,'b) map -> int
|
| 79 |
val hash: ('b -> int) -> ('a,'b) map -> int
|
| 80 |
val equal: ('b -> 'b -> bool) -> ('a,'b) map -> ('a,'b) map -> bool
|
| 81 |
end
|
| 82 |
end
|
| 83 |
|
| 84 |
module Make(X : ARG) : S with type 'a elem = 'a X.t
|
| 85 |
module Make_transp(X : ARG) : S with type 'a elem = 'a X.t and type 'a t = 'a X.t list
|
| 86 |
module Lift(X : ARG0) : ARG with type 'a t = X.t
|
| 87 |
|
| 88 |
module String : ARG0 with type t = string
|
| 89 |
|