Re: Add lists:find/2,3
Pedram Nimreezi <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.patches |
|---|---|
| Message-ID | <CAAaFgHuz5F5N+kE73pi-5sgDsK2JsVCZ+XH4k6=+Grf-dfa=jA@mail.gmail.com> |
+1 On Oct 13, 2013 8:44 PM, "Sean Cribbs" <[email protected]> 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. > > https://github.com/erlang/otp/pull/102 > > -- > Sean Cribbs <[email protected]> > Software Engineer > Basho Technologies, Inc. > http://basho.com/ > > _______________________________________________ > erlang-patches mailing list > [email protected] > http://erlang.org/mailman/listinfo/erlang-patches > > _______________________________________________ erlang-patches mailing list [email protected] http://erlang.org/mailman/listinfo/erlang-patches