module Make: functor (
Key
:
sig
include Datatype.S
val id : t -> int
end
) ->
functor (
V
:
Tagged_type
) ->
functor (
Comp
:
sig
val e : bool
val f : Key.t -> V.t -> bool
val compose : bool -> bool -> bool
val default : bool
end
) ->
functor (
Initial_Values
:
sig
val v : (Key.t * V.t) list list
end
) ->
functor (
Datatype_deps
:
sig
end
) ->
sig
.. end
Parameters: |
Key |
: |
sig
include Datatype.S
val id: t -> int
end
|
V |
: |
Tagged_type
|
Comp |
: |
sig val e: bool val f : Key.t -> V.t -> bool val compose : bool -> bool -> bool val default:bool end
|
Initial_Values |
: |
sig val v : (Key.t*V.t) list list end
|
Datatype_deps |
: |
sig val l : State.t list end
|
|
type
key = Key.t
type
leaf_annot = bool
type
branch_annot = Hptmap.Tag_comp.t
type
tt = private
include Datatype.S
val self : State.t
val empty : t
val tag : t -> int
val hash_debug : t -> int
val is_empty : t -> bool
val comp : t -> bool
val add : key -> V.t -> t -> t
val find : key -> t -> V.t
val remove : key -> t -> t
val mem : key -> t -> bool
val iter : (Key.t -> V.t -> unit) -> t -> unit
val map : (V.t -> V.t) -> t -> t
val fold : (Key.t -> V.t -> 'a -> 'a) -> t -> 'a -> 'a
val comp_prefixes : t -> t -> unit
val pretty_prefix : Hptmap.prefix -> Format.formatter -> t -> unit
type
subtree
exception Found_prefix of Hptmap.prefix * subtree * subtree
val find_prefix : t -> Hptmap.prefix -> subtree option
val hash_subtree : subtree -> int
val equal_subtree : subtree -> subtree -> bool
val generic_merge : cache:string * int ->
decide:(Key.t -> V.t option -> V.t option -> V.t) -> t -> t -> t
val symetric_merge : cache:string * int ->
decide_none:(Key.t -> V.t -> V.t) ->
decide_some:(V.t -> V.t -> V.t) -> t -> t -> t
val generic_is_included : exn ->
cache:string * int ->
decide_fst:(Key.t -> V.t -> unit) ->
decide_snd:(Key.t -> V.t -> unit) ->
decide_both:(V.t -> V.t -> unit) -> t -> t -> unit
val generic_symetric_existential_predicate : exn ->
decide_one:(Key.t -> V.t -> unit) ->
decide_both:(V.t -> V.t -> unit) -> t -> t -> unit
val cached_fold : cache:string * int ->
temporary:bool ->
f:(key -> V.t -> 'a) ->
joiner:('a -> 'a -> 'a) -> empty:'a -> t -> 'a
val cached_map : cache:string * int ->
temporary:bool -> f:(key -> V.t -> V.t) -> t -> t
val is_singleton : t -> (key * V.t) option
val min_binding : t -> key * V.t
val max_binding : t -> key * V.t
val split : key -> t -> t * V.t option * t