Skip to content

Instantly share code, notes, and snippets.

@lepoetemaudit
Last active February 16, 2017 03:36
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lepoetemaudit/9e7a6baf9a90c7a6ec87ea85aff70b9b to your computer and use it in GitHub Desktop.
Save lepoetemaudit/9e7a6baf9a90c7a6ec87ea85aff70b9b to your computer and use it in GitHub Desktop.
Deep (recursively) merge maps in elixir
defmodule DeepMerge do
defp _merge(key, v1, v2) when is_map(v1) do
Map.merge(v1, v2, &_merge/3)
end
defp _merge(key, v1, v2), do: v2
def merge(map1, map2) when is_map(map1) and is_map(map2) do
Map.merge map1, map2, &_merge/3
end
end
# example
map1 = %{"top" => %{"name" => "jim"}}
map2 = %{"top" => %{"age" => 22}}
%{"top" => %{"name" => "jim", "age" => 22}} = DeepMerge.merge(map1, map2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment