[erlang-patches] Add lists:find/2,3
Mon Oct 14 02:49:25 CEST 2013
On Oct 13, 2013 8:44 PM, "Sean Cribbs" <> wrote:
> `lists:find/2,3` returns the first element of the passed list for which
> the predicate fun returns `true`. If no elements result in the predicate
> being true, `undefined` (/2) or the given default value (/3) is returned.
> ## Why this new feature?
> A common task is to select the first element from a list that matches a
> condition, but there is no existing lists function or language feature that
> avoids traversing the entire list, while still returning a "safe" value.
> `lists:find/2,3` codifies the pattern of a tail-recursive search for the
> matching item without resorting to exceptions (used to abort `foreach/2` or
> `foldl/3`) and always returns either the first matching item, or an
> otherwise safe value.
> ## Risks / uncertain artifacts
> It is unclear the desired order of arguments for the 3-arity version. I
> have made the default value the final argument which is consistent with
> `application:get_env/3` and `proplists:get_value/3`, but most functions in
> lists place the `List` argument last.
> ## How did you solve it?
> Following the patterns of other functions in the lists module,
> `lists:find/3` tests the predicate function against the head of the list,
> returning the head if the predicate passes, or recursing over the tail if
> it does not.
> Sean Cribbs <>
> Software Engineer
> Basho Technologies, Inc.
> erlang-patches mailing list
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-patches