It would be useful to have a function that uses the Access protocol to delete elements within nested data structures. This is similar in concept to
Kernel.pop_in/2, but Kernel.delete_in/2 should just return the data structure without the specified element, whereas Kernel.pop_in/2 returns a tuple whose first element is the removed value and second element is the data structure without the specified element. The return structure of Kernel.delete_in/2 would allow it to be more easily chained than Kernel.pop_in/2.
Expected behavior
Kernel.delete_in(%{foo: "bar", baz: "qux"}, [:foo])
#=> %{baz: "qux"}
Kernel.delete_in(%{foo: %{bar: "baz", qux: "quux"}}, [:foo, :qux])
#=> %{foo: %{bar: "baz"}}