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

Bengt Kleberg <>
Wed Jan 21 12:12:42 CET 2009


Greetings,

Rickard has my support. I, too, find mixing boolean and none boolean
return values surprising.

Perhaps {} (empty tuple) is an appropriate return value if nothing is
found?


bengt

On Wed, 2009-01-21 at 11:50 +0100, 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




More information about the erlang-questions mailing list