<br><br><div class="gmail_quote">On Wed, Jan 21, 2009 at 12:12 PM, Bengt Kleberg <span dir="ltr"><<a href="mailto:bengt.kleberg@ericsson.com">bengt.kleberg@ericsson.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Greetings,<br>
<br>
Rickard has my support. I, too, find mixing boolean and none boolean<br>
return values surprising.<br>
<br>
Perhaps {} (empty tuple) is an appropriate return value if nothing is<br>
found?<br>
<font color="#888888"></font></blockquote><div><br>Erlang is not C thus we don't must return same type as for example -1 in C used to error result. Erlang have atoms (and works as well as -1 in C) thus just use it.<br>
Empty list [] sounds good for function which returns list of results but empty tuple {} is not empty variant for tuple. Tuple is not collection it is just tuple. Tuple with different sizes are different types. List with different amount of members are same types. There is big semantic shift.<br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><font color="#888888"><br>
<br>
bengt<br>
</font><div><div></div><div class="Wj3C7c"><br>
On Wed, 2009-01-21 at 11:50 +0100, Mikael Pettersson wrote:<br>
> Richard Carlsson writes:<br>
>  > Bjorn Gustavsson wrote:<br>
>  > > On Tue, Jan 20, 2009 at 4:15 PM, James Hague <<a href="mailto:james.hague@gmail.com">james.hague@gmail.com</a>> wrote:<br>
>  > >> I would like to propose the addition of lists:keyfind/3, which is<br>
>  > >> identical in structure to lists:keysearch/3, except that it returns<br>
>  > >> either 'false' or the found tuple, with no additional wrapping of the<br>
>  > >> result.  This can be trivially added to the lists module:<br>
>  > >><br>
>  > >>   keyfind(K, N, L) -><br>
>  > >>      case keysearch(K, N, L) of<br>
>  > >>         {_, Tuple} -> Tuple;<br>
>  > >>         X -> X<br>
>  > >>      end.<br>
>  > >><br>
>  > ><br>
>  > > Good idea.<br>
>  > ><br>
>  > > Unless someone has any good reasons agains this suggestion, we will probably<br>
>  > > implement it in R13. (lists:keyfind/3 will be a BIF, and<br>
>  > > lists:keysearch/3 implemented<br>
>  > > in Erlang.)<br>
>  ><br>
>  > Only that I always wince at the mixing of 'false' with {...}. Since this<br>
>  > is a new function, I'd prefer 'error' (to pick another atom that is<br>
>  > frequently used in Erlang libraries).<br>
><br>
> Except that it's not actually an error to ask "search list L<br>
> for a tuple T with value K in element N and return T, or tell<br>
> me if none could be found". So I'd argue that 'false' is much<br>
> more appropriate than 'error'.<br>
><br>
> At least, _I_ don't want that to be an error, since that would<br>
> require silly coding like:<br>
> 1. ask if the element is there, but don't return it (query, boolean)<br>
> 2. if it's there, get it (lookup, throws exn on failure not never here)<br>
> when what one often wants is:<br>
> 1. if the element is there, return it, otherwise return 'no'<br>
> _______________________________________________<br>
> erlang-questions mailing list<br>
> <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
> <a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>--Hynek (Pichi) Vychodil<br><br>Analyze your data in minutes. Share your insights instantly. Thrill your boss.  Be a data hero!<br>Try Good Data now for free: <a href="http://www.gooddata.com">www.gooddata.com</a><br>