Functor OwnMap.Make


module Make: 
functor (Key : OrderedType) ->
functor (Img : OrderedType) -> S with type key = Key.t and type img = Img.t
The module to create a map with a fixed image
Parameters:
Key : OrderedType
Img : OrderedType

type key 
The domain of the map
type img 
The image of the map
type t 
The map itself
val empty : t
The empty map
val is_empty : t -> bool
Tests if the map is empty or not.
val add : key -> img -> t -> t
add x y m returns a map containing the same bindings as m, plus a binding of x to y. If x was already bound in m, its previous binding disappears.
val find : key -> t -> img
Returns the image of the given key. Raises Not_found if the key is not assigned to a value.
val remove : key -> t -> t
remove x m returns a map containing the same bindings as m, except for x which is unbound in the returned map.
val mem : key -> t -> bool
mem x m returns true if m contains a binding for x, and false otherwise.
val iter : (key -> img -> unit) -> t -> unit
iter f m applies f to all bindings in map m. f receives the key as first argument, and the associated value as second argument. The bindings are passed to f in increasing order with respect to the ordering over the type of the keys. Only current bindings are presented to f: bindings hidden by more recent bindings are not passed to f.
val map : (img -> img) -> t -> t
map f m returns a map with same domain as m, where the associated value a of all bindings of m has been replaced by the result of the application of f to a. The bindings are passed to f in increasing order with respect to the ordering over the type of the keys.
val mapi : (key -> img -> img) -> t -> t
Same as S.map, but the function receives as arguments both the key and the associated value for each binding of the map.
val fold : (key -> img -> 'a -> 'a) -> t -> 'a -> 'a
fold f m a computes (f kN dN ... (f k1 d1 a)...), where k1 ... kN are the keys of all bindings in m (in increasing order), and d1 ... dN are the associated data.
val compare : t -> t -> int
Total ordering between maps. Here's no need to give a compare function for the images like in the standard library, because the image compare function is know throw the functor parameter Img.compare.
val equal : t -> t -> bool
equal m1 m2 tests whether the maps m1 and m2 are equal, that is, contain equal keys and associate them with equal data. Here's no need to give a compare function for the images like in the standard library, because the image compare function is know throw the functor parameter Img.compare.

New Functions


val add' : key -> img option -> t -> t
add' x y m returns m if y = None, and add x (Some e) m if y = Some e.
val find' : key -> t -> img option
Similar to find, but does not raise an error if no image is found.
val add_list : (key * img) list -> t -> t
add a list of key,img pairs to the map
val to_list : t -> (key * img) list
returns the hole map as list of key,img tuples
val from_list : (key * img) list -> t
creates a new map from a assignment list
val map_to_list : (key -> img -> 'a) -> t -> 'a list
map_to_list f m returns the list of values that f return, if it is applied to the key and image values of the map m.
val mapi_and_map_to_list : (key -> img -> img * 'a) ->
t -> t * 'a list
mapi_and_map_to_list f m returns the list of values that f return, if it is applied to the key and image values of the map m and allows to change the image of the map at the same time.
val domain : t -> key list
Returns the domain of the map as a list of keys
val fold_two : (key -> img option -> img option -> 'a -> 'a) ->
'a -> t -> t -> 'a
fold_two f a m1 m2 fold the two maps m1 and m2 together. For all key \in \dom(m1) \cap \dom(m2) the function gets two Some img parameters, where img is the result of find key m of the corresponding map. If key is only in one of the domains, the image parameter of the other map is set to None.
val restrict : key list -> t -> t
restrict kl m returns a new map, from which all bindings x from m are removed, if they are not part of the key list kl.