[erlang-questions] lists:keyfind as an alternative to lists:keysearch

Hynek Vychodil <>
Wed Jan 21 12:40:14 CET 2009


On Wed, Jan 21, 2009 at 11:50 AM, Mikael Pettersson <> wrote:

> Richard Carlsson writes:
>  > Bjorn Gustavsson wrote:
>  > > On Tue, Jan 20, 2009 at 4:15 PM, James Hague <>
> wrote:
>  > >> I would like to propose the addition of lists:keyfind/3, which is
>  > >> identical in structure to lists:keysearch/3, except that it returns
>  > >> either 'false' or the found tuple, with no additional wrapping of the
>  > >> result.  This can be trivially added to the lists module:
>  > >>
>  > >>   keyfind(K, N, L) ->
>  > >>      case keysearch(K, N, L) of
>  > >>         {_, Tuple} -> Tuple;
>  > >>         X -> X
>  > >>      end.
>  > >>
>  > >
>  > > Good idea.
>  > >
>  > > Unless someone has any good reasons agains this suggestion, we will
> probably
>  > > implement it in R13. (lists:keyfind/3 will be a BIF, and
>  > > lists:keysearch/3 implemented
>  > > in Erlang.)
>  >
>  > Only that I always wince at the mixing of 'false' with {...}. Since this
>  > is a new function, I'd prefer 'error' (to pick another atom that is
>  > frequently used in Erlang libraries).
>
> Except that it's not actually an error to ask "search list L
> for a tuple T with value K in element N and return T, or tell
> me if none could be found". So I'd argue that 'false' is much
> more appropriate than 'error'.
>
> At least, _I_ don't want that to be an error, since that would
> require silly coding like:
> 1. ask if the element is there, but don't return it (query, boolean)
> 2. if it's there, get it (lookup, throws exn on failure not never here)
> when what one often wants is:
> 1. if the element is there, return it, otherwise return 'no'
> _______________________________________________
> erlang-questions mailing list
> 
> http://www.erlang.org/mailman/listinfo/erlang-questions
>

'no' sounds good for me.

-- 
--Hynek (Pichi) Vychodil

Analyze your data in minutes. Share your insights instantly. Thrill your
boss.  Be a data hero!
Try Good Data now for free: www.gooddata.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20090121/f7ebe8e9/attachment.html>


More information about the erlang-questions mailing list