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 h...@nathanmlong.com <h...@nathanmlong.com>
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 elixir-lang-core+unsubscr...@googlegroups.com.
> 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 elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4%2Bgf-dJt19wfc8QckospBJFCm93FUvr7AmK4ZzjsQsrNQ%40mail.gmail.com.

Reply via email to