Page
Library
Module
Module type
Parameter
Class
Class type
Source
Standard.MapA collection of key-value pairs
This functor lets you describe the type of Maps a little more concisely.
A Map can be constructed using one of the functions available in Map.Int, Map.String or Map.Poly
val empty :
(module Standard__.Core.Comparator.S
with type identity = 'identity
and type t = 'key) ->
('key, 'value, 'identity) tA map with nothing in it.
val singleton :
(module Standard__.Core.Comparator.S
with type identity = 'identity
and type t = 'key) ->
key:'key ->
value:'value ->
('key, 'value, 'identity) tCreate a map from a key and value
Examples
Map.singleton (module Int) ~key:1 ~value:"Ant" |> Map.toList = [(1, "Ant")]val ofArray :
(module Standard__.Core.Comparator.S
with type identity = 'identity
and type t = 'key) ->
('key * 'value) array ->
('key, 'value, 'identity) tCreate a map from an Array of key-value tuples
val ofList :
(module Standard__.Core.Comparator.S
with type identity = 'identity
and type t = 'key) ->
('key * 'value) list ->
('key, 'value, 'identity) tCreate a map of a List of key-value tuples
Adds a new entry to a map. If key is allready present, its previous value is replaced with value.
Examples
Map.add
(Map.Int.ofList [(1, "Ant"); (2, "Bat")])
~key:3
~value:"Cat"
|> Map.toList = [(1, "Ant"); (2, "Bat"); (3, "Cat")]Map.add (Map.Int.ofList [(1, "Ant"); (2, "Bat")]) ~key:2 ~value:"Bug" |> Map.toList = [(1, "Ant"); (2, "Bug")]The index operator version of add
Note Currently this is only supported by the OCaml syntax.
Examples
let indexToAnimal = Map.Int.ofList [(1, "Ant");(2, "Bat");(3, "Cat")] in
let indexToAnimal = numbers.Map.?{4} <- "Dog" in
indexToAnimal.Map.?{4} = Some "Dog"Removes a key-value pair from a map based on they provided key.
Examples
let animalPopulations = Map.String.ofList [
("Elephant", 3_156);
("Mosquito", 56_123_156);
("Rhino", 3);
("Shrew", 56_423);
] in
Map.remove animalPopulations "Mosquito" |> Map.toList = [
("Elephant", 3_156);
("Rhino", 3);
("Shrew", 56_423);
]val get : ('key, 'value, 'id) t -> 'key -> 'value optionGet the value associated with a key. If the key is not present in the map, returns None.
Examples
let animalPopulations = Map.String.ofList ("Elephant", 3_156); ("Mosquito", 56_123_156); ("Rhino", 3); ("Shrew", 56_423); in Map.get animalPopulations "Shrew" = Some 56_423;
val (.?{}) : ('key, 'value, _) t -> 'key -> 'value optionThe index operator version of Core.Map.get
Note Currently this is only supported by the OCaml syntax.
Examples
let indexToAnimal = Map.Int.ofList [(1, "Ant");(2, "Bat");(3, "Cat")] in
indexToAnimal.Map.?{3} = Some "Cat"val update :
('key, 'value, 'id) t ->
key:'key ->
f:('value option -> 'value option) ->
('key, 'value, 'id) tUpdate the value for a specific key using f. If key is not present in the map f will be called with None.
Examples
let animalPopulations = Map.String.ofList [
("Elephant", 3_156);
("Mosquito", 56_123_156);
("Rhino", 3);
("Shrew", 56_423);
] in
Map.update animalPopulations ~key:"Hedgehog" ~f:(fun population ->
match population with
| None -> Some 1
| Some count -> Some (count + 1)
)
|> Map.toList = [
("Elephant", 3_156);
("Hedgehog", 1);
("Mosquito", 56_123_156);
("Rhino", 3);
("Shrew", 56_423);
]val isEmpty : (_, _, _) t -> boolDetermine if a map is empty.
val length : (_, _, _) t -> intReturns the number of key-value pairs present in the map.
Examples
Map.Int.ofList [(1, "Hornet"); (3, "Marmot")]
|> Map.length = 2val any : (_, 'value, _) t -> f:('value -> bool) -> boolDetermine if f returns true for any values in a map.
val all : (_, 'value, _) t -> f:('value -> bool) -> boolDetermine if f returns true for all values in a map.
val find :
('key, 'value, _) t ->
f:(key:'key -> value:'value -> bool) ->
('key * 'value) optionReturns, as an Option the first key-value pair for which f evaluates to true.
If f doesn't return true for any of the elements find will return None.
Searches starting from the smallest key
Examples
Map.String.ofList [
("Elephant", 3_156);
("Mosquito", 56_123_156);
("Rhino", 3);
("Shrew", 56_423);
]
|> Map.find ~f:(fun ~key ~value -> value > 10_000)
= Some ("Mosquito", 56_123_156)val includes : ('key, _, _) t -> 'key -> boolDetermine if a map includes key.
val minimum : ('key, _, _) t -> 'key optionReturns, as an Option, the smallest key in the map.
Returns None if the map is empty.
Examples
Map.Int.ofList [(8, "Pigeon"); (1, "Hornet"); (3, "Marmot")]
|> Map.minimum = Some 1val maximum : ('key, _, _) t -> 'key optionReturns the largest key in the map.
Returns None if the map is empty.
Examples
Map.Int.ofList [(8, "Pigeon"); (1, "Hornet"); (3, "Marmot")]
|> Map.maximum = Some 8val extent : ('key, _, _) t -> ('key * 'key) optionval merge :
('key, 'v1, 'id) t ->
('key, 'v2, 'id) t ->
f:('key -> 'v1 option -> 'v2 option -> 'v3 option) ->
('key, 'v3, 'id) tCombine two maps.
You provide a function f which is provided the key and the optional value from each map and needs to account for the three possibilities:
1. Only the 'left' map includes a value for the key. 2. Both maps contain a value for the key. 3. Only the 'right' map includes a value for the key.
You then traverse all the keys, building up whatever you want.
Examples
let animalToPopulation =
Map.String.ofList [
("Elephant", 3_156);
("Shrew", 56_423);
]
in
let animalToPopulationGrowthRate = Map.String.ofList [
("Elephant", 0.88);
("Squirrel", 1.2);
("Python", 4.0);
] in
Map.merge
animalToPopulation
animalToPopulationGrowthRate
~f:(fun _animal population growth ->
match (Option.both population growth) with
| Some (population, growth) ->
Some Float.((ofInt population) * growth)
| None -> None
)
|> Map.toList
= [("Elephant", 2777.28)]Apply a function to all values in a dictionary.
Examples
Map.String.ofList [
("Elephant", 3_156);
("Shrew", 56_423);
]
|> Map.map ~f:Int.toString
|> Map.toList
= [
("Elephant", "3156");
("Shrew", "56423");
]Like map but f is also called with each values corresponding key
Keep elements that f returns true for.
Examples
Map.String.ofList [
("Elephant", 3_156);
("Shrew", 56_423);
]
|> Map.map ~f:(fun population -> population > 10_000)
|> Map.toList
= [
("Shrew", "56423");
]val partition :
('key, 'value, 'id) t ->
f:(key:'key -> value:'value -> bool) ->
('key, 'value, 'id) t * ('key, 'value, 'id) tDivide a map into two, the first map will contain the key-value pairs that f returns true for, pairs that f returns false for will end up in the second.
Examples
let (endangered, notEndangered) = Map.String.ofList [
("Elephant", 3_156);
("Mosquito", 56_123_156);
("Rhino", 3);
("Shrew", 56_423);
]
|> Map.partition ~f:(fun population -> population < 10_000)
in
Map.toList endangered = [
("Elephant", 3_156);
("Rhino", 3);
];
Map.toList notEndangered = [
("Mosquito", 56_123_156);
("Shrew", 56_423);
];val fold :
('key, 'value, _) t ->
initial:'a ->
f:('a -> key:'key -> value:'value -> 'a) ->
'aLike Array.fold but f is also called with both the key and value
val forEach : (_, 'value, _) t -> f:('value -> unit) -> unitRuns a function f against each value in the map.
val forEachI :
('key, 'value, _) t ->
f:(key:'key -> value:'value -> unit) ->
unitLike Map.forEach except ~f is also called with the corresponding key
val keys : ('key, _, _) t -> 'key listGet a List of all of the keys in a map.
Examples
Map.String.ofList [
("Elephant", 3_156);
("Mosquito", 56_123_156);
("Rhino", 3);
("Shrew", 56_423);
]
|> Map.keys = [
"Elephant";
"Mosquito";
"Rhino";
"Shrew";
]val values : (_, 'value, _) t -> 'value listGet a List of all of the values in a map.
Examples
Map.String.ofList [
("Elephant", 3_156);
("Mosquito", 56_123_156);
("Rhino", 3);
("Shrew", 56_423);
]
|> Map.values = [
3_156;
56_123_156;
3;
56_423;
]val toArray : ('key, 'value, _) t -> ('key * 'value) arrayGet an Array of all of the key-value pairs in a map.
val toList : ('key, 'value, _) t -> ('key * 'value) listGet a List of all of the key-value pairs in a map.
module Poly : sig ... endConstruct a Map which can be keyed by any data type using the polymorphic compare function.