module type S =sig..end
type char_ 
type key 
type 'a t 
val empty : 'a t
val is_empty : 'a t -> bool
val add : key -> 'a -> 'a t -> 'a tval remove : key -> 'a t -> 'a tval find : key -> 'a t -> 'a optionval find_exn : key -> 'a t -> 'a
val longest_prefix : key -> 'a t -> keylongest_prefix k m finds the longest prefix of k that leads to
      at least one path in m (it does not mean that the prefix is bound to
      a value.
      Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m
      will return "abc"
Since 0.17
val update : key -> ('a option -> 'a option) -> 'a t -> 'a tNone if the key is absent, or Some v if key is bound to v;
      if it returns None the key is removed, otherwise it
      returns Some y and key becomes bound to yval fold : ('b -> key -> 'a -> 'b) -> 'b -> 'a t -> 'bCCTrie.WORD.of_list to rebuild keys.val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
val map : ('a -> 'b) -> 'a t -> 'b tval iter : (key -> 'a -> unit) -> 'a t -> unitCCTrie.S.fold, but for effectful functionsval fold_values : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'bCCTrie.S.fold, that doesn't keep keysval iter_values : ('a -> unit) -> 'a t -> unit
val merge : ('a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a tval size : 'a t -> intval to_list : 'a t -> (key * 'a) list
val of_list : (key * 'a) list -> 'a t
val to_seq : 'a t -> (key * 'a) CCTrie.sequence
val of_seq : (key * 'a) CCTrie.sequence -> 'a t
val to_seq_values : 'a t -> 'a CCTrie.sequence
val to_tree : 'a t ->
       [ `Char of char_ | `Switch | `Val of 'a ] CCTrie.ktreeval above : key -> 'a t -> (key * 'a) CCTrie.sequenceval below : key -> 'a t -> (key * 'a) CCTrie.sequence