module UMap: sig
.. end
type 'a
t
Maps over Unicode characters.
val empty : 'a t
val is_empty : 'a t -> bool
val add : ?eq:('a -> 'a -> bool) ->
CamomileLibrary.UChar.t ->
'a -> 'a t -> 'a t
add ?eq u v m
returns the new map which is same to m
except it maps u
to some value v'
which satisfies eq v v'
.
If eq
is not supplied, structural equality is used.
val add_range : ?eq:('a -> 'a -> bool) ->
CamomileLibrary.UChar.t ->
CamomileLibrary.UChar.t ->
'a -> 'a t -> 'a t
add ?eq u1 u2 v m
returns the new map which is same to m
except it maps characters in the range u1
-u2
to some value v'
which satisfies eq v v'
.
If eq
is not supplied, structural equality is used.
val find : CamomileLibrary.UChar.t -> 'a t -> 'a
val remove : CamomileLibrary.UChar.t ->
'a t -> 'a t
val remove_range : CamomileLibrary.UChar.t ->
CamomileLibrary.UChar.t ->
'a t -> 'a t
remove_range u1 u2 m
removes u1
-u2
from the domain of m
val from : CamomileLibrary.UChar.t ->
'a t -> 'a t
from u m
restricts the domain of m
to the characters whose
code points are equal or greater than u
.
val after : CamomileLibrary.UChar.t ->
'a t -> 'a t
after u m
restricts the domain of m
to the characters whose
code points are greater than u
.
val until : CamomileLibrary.UChar.t ->
'a t -> 'a t
until u m
restricts the domain of m
to the characters whose
code points are equal or smaller than u
.
val before : CamomileLibrary.UChar.t ->
'a t -> 'a t
before u m
restricts the domain of m
to the characters whose
code points are smaller than u
.
val mem : CamomileLibrary.UChar.t -> 'a t -> bool
val iter : (CamomileLibrary.UChar.t -> 'a -> unit) -> 'a t -> unit
val iter_range : (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t -> 'a -> unit) ->
'a t -> unit
iter proc m
: For each contingent region u1
-u2
that is mapped to a constant v
, proc u1 u2 v
is called.
The order of call is determined by increasing order on u1
.
map ?eq f m
and mapi ?eq f m
: Similar to map
and mapi
in stdlib Map, but if the map m'
is returned, it is only guaranteed
that eq (find u m') (f (find u m ))
is true for map
and
eq (find u m') (f u (find u m ))
is true for mapi
. If eq
is
not specified, structural equality is used.
val map : ?eq:('b -> 'b -> bool) ->
('a -> 'b) -> 'a t -> 'b t
val mapi : ?eq:('b -> 'b -> bool) ->
(CamomileLibrary.UChar.t -> 'a -> 'b) ->
'a t -> 'b t
val fold : (CamomileLibrary.UChar.t -> 'b -> 'a -> 'a) ->
'b t -> 'a -> 'a
val fold_range : (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t -> 'b -> 'a -> 'a) ->
'b t -> 'a -> 'a
fold_range f m x
is equivalent to
f u_(2n) u_(2n+1) v_n (... (f u_1 u_2 v_1 x))
where all characters in
the range u_(2k)
-u_(2k+1)
are mapped to v_k
and
u_1
< u_3
< ... in code point order.
For each range u_(2k)
-u_(2k+1)
is separated by a character
which is not mapped to v_k
.
val set_to_map : CamomileLibrary.USet.t -> 'a -> 'a t
Constant map.
val domain : 'a t -> CamomileLibrary.USet.t
Domain.
val map_to_set : ('a -> bool) -> 'a t -> CamomileLibrary.USet.t
map_to_set p m
returns the set of characters which are mapped
to values satisfying the predicate p
by m
.
val umap_of_imap : 'a IMap.t -> 'a t
val imap_of_umap : 'a t -> 'a IMap.t