[Proposal] Add function Kernel.delete_in/2

125 views
Skip to first unread message

Jonathan Arnett

unread,
Oct 27, 2018, 1:51:02 PM10/27/18
to elixir-lang-core
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"}}


Louis Pilfold

unread,
Oct 27, 2018, 2:26:11 PM10/27/18
to elixir-l...@googlegroups.com
Hey

How would it know how to delete a value from the given data structure? The Access protocol could be implemented for any term.

Cheers,
Louis

--
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 elixir-lang-co...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/85369f10-5234-4c75-a282-cd644e380a0b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

José Valim

unread,
Oct 27, 2018, 3:37:31 PM10/27/18
to elixir-l...@googlegroups.com
Hi Jonathan,

We had this discussion when we added pop_in/2. The reason why we choose pop_in/2 is because it provides more features than delete_in on its own and we want to avoid overloading Kernel with too many functions. If your concern is chaining, you can always perform a |> elem(1) after popping.

Thanks for the proposal!

José Valim
Skype: jv.ptec
Founder and Director of R&D


Reply all
Reply to author
Forward
0 new messages