Today's Advent of Code puzzle had a handful of us in the Elixir slack
wishing for something that bridged the gap between Map.update/4,
Map.update!/3, and Map.replace/3.
Map.update/4 litters your map with extra keys you then have to find and
filter out.
Map.update!/3 throws exceptions which can be especially undesirable in a
pipeline.
Map.replace/3 requires you to pre-calculate the new value.
The goal would be "if this key exists in the map, update its value using
this function."
I wrote myself a little helper function (below) to wrap Map.replace/3, and
I know someone else said they made a bunch of {key, nil} s and then had to
filter them back out.
Anyway, Advent of Code probably isn't the only time it'd be helpful to have
that syntactic sugar. Thoughts?
Mackenzie
def replace_with(map, key, _) when not is_map_key(map, key), do: map
def replace_with(map, key, f) do
Map.replace(map, key, f.(map[key]))
end
--
You received this message because you are subscribed to the Google Groups
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elixir-lang-core/aace8ef8-3566-4637-afb5-56bfb2f3e626n%40googlegroups.com.