Hi Nathan, thanks for the email. Can you please show some examples of where they could be handy with some context around them? Thank you!
On Fri, Mar 4, 2022 at 3:45 PM [email protected] <[email protected]> wrote: > This is a modified version of what I proposed in > https://github.com/elixir-lang/elixir/pull/11681 > > Similar to `Map.pop/2` and and `Keyword.pop/2`, I propose adding > `List.pop/2`. > > I also propose adding `List.find_and_pop/2`, which is more generalized > since it takes a function. > > Here are possible implementations. > > ```elixir > @doc """ > Returns and removes the first value matching `item` in the `list`. > > ## Examples > iex> List.pop([1, 2, 2, 3], 2) > {2, [1, 2, 3]} > iex> List.pop([1, 2, 3, 4], 20) > {nil, [1, 2, 3, 4]} > """ > def pop(list, item) do > find_and_pop(list, &(&1 == item)) > end > > @doc """ > Returns and removes the first value matching `fun` in the `list`. > > ## Examples > iex> List.find_and_pop([1, 2, 3, 4], &(&1 > 2)) > {3, [1, 2, 4]} > iex> List.find_and_pop([1, 2, 3, 4], &(&1 > 20)) > {nil, [1, 2, 3, 4]} > """ > def find_and_pop(list, fun) do > case Enum.find_index(list, fun) do > nil -> {nil, list} > i -> pop_at(list, i) > end > 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/bdc98b8c-fc73-40d7-8287-eb0b5d3ea97en%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/bdc98b8c-fc73-40d7-8287-eb0b5d3ea97en%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- 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/CAGnRm4%2Bgf-dJt19wfc8QckospBJFCm93FUvr7AmK4ZzjsQsrNQ%40mail.gmail.com.
