Dictionaries are implemented in a Dict core library.
A dictionary mapping unique keys to values. The keys can be any comparable type. This includes Int, Float, Time, Char, String, and tuples or lists of comparable types.
Insert, remove, and query operations all take O(log n) time.
Unlike Tuples and Records, Dictionaries can change their structure, in other words it is possible to add and remove keys.
It is possible to update a value by a key.
It is also possible to access or update a value using dynamic keys.
You can retrieve a value from a Dictionary by using a
Type definition of
get : comparable -> Dict comparable v -> Maybe v
It will always return
Maybe v, because it is possible to try to get a value by an non-existent key.
import Dict initialUsers = Dict.fromList [ (1, "John"), (2, "Brad") ] getUserName id = initialUsers |> Dict.get id |> Maybe.withDefault "Anonymous" getUserName 2 -- "Brad" getUserName 0 -- "Anonymous"
Update operation on a Dictionary is performed by using
Maybe.map, since the requested key might be absent.
import Dict initialUsers = Dict.fromList [ (1, "John"), (2, "Brad") ] updatedUsers = Dict.update 1 (Maybe.map (\name -> name ++ " Johnson")) initialUsers Maybe.withDefault "No user" (Dict.get 1 updatedUsers) -- "John Johnson"