Filter would work for my case as well, but in general those are different. 
Should we add both or select just one?

Michał.

> On 28 Jul 2016, at 17:03, José Valim <[email protected]> wrote:
> 
> Why not make it a filter that applies it to all matching?
> 
> On Thursday, July 28, 2016, Michał Muskała <[email protected] 
> <mailto:[email protected]>> wrote:
> Hello everybody,
> 
> I’d like to propose adding a new accessor function to Access - Access.find/1. 
> It works exactly like Access.at/1, but instead of accessing an element by 
> index (with Enum.at/1), you can provide an arbitrary function that will be 
> used with Enum.find/2 to match the proper value.
> I implemented this function in a project, since I needed it. Maybe it would 
> be generally useful? The implementation is rather simple:
> 
>   def find(fun) when is_function(fun, 1) do
>     fn(op, data, next) -> find(op, data, fun, next) end
>   end
> 
>   defp find(:get, data, fun, next) when is_list(data) do
>     data |> Enum.find(fun) |> next.()
>   end
> 
>   defp find(:get_and_update, data, fun, next) when is_list(data) do
>     case Enum.split_while(data, &(not fun.(&1))) do
>       {preceding, []} ->
>         {nil, preceding}
>       {preceding, [elem | following]} ->
>         case next.(elem) do
>           {get, update} -> {get,  preceding ++ [update] ++ following}
>           :pop          -> {elem, preceding ++ following}
>         end
>     end
>   end
> 
>   defp find(_op, data, _fun, _next) do
>     raise "Access.find/1 expected a list, got: #{inspect data}"
>   end
> 
> Michał.
> 
> --
> 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] <javascript:;>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/elixir-lang-core/434356A9-EF6A-47F9-BEEB-0C7D4054B2F1%40muskala.eu
>  
> <https://groups.google.com/d/msgid/elixir-lang-core/434356A9-EF6A-47F9-BEEB-0C7D4054B2F1%40muskala.eu>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.
> 
> 
> --
> 
> 
> José Valim
> www.plataformatec.com.br <http://www.plataformatec.com.br/>
> Skype: jv.ptec
> Founder and Director of R&D
> 
> 
> --
> 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] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4L5yW9X%2BOFoq3S5ffs%3DMwbUXWrc4cbze9foKKDTsXo-Jg%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4L5yW9X%2BOFoq3S5ffs%3DMwbUXWrc4cbze9foKKDTsXo-Jg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

-- 
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/012DDE26-62B1-46C1-AA49-6945A75F47A5%40muskala.eu.
For more options, visit https://groups.google.com/d/optout.

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to