<p dir="ltr">lists_first can easily be implemented by using dropwhile and hd. Which is how I would use it if I would ever need it in a project.</p>
<div class="gmail_quote">On Apr 25, 2013 12:05 PM, "Anton Fedorov" <<a href="mailto:datacompboy@call2ru.com">datacompboy@call2ru.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hmm... if add new functions into lists, think about this one too:<br>
<br>
%% --------------------------------------------<br>
%% @spec lists_first(Pred,List) -> {Element, List}<br>
%%<br>
%% @doc Pick first element from List, for which Pred return true.<br>
%% @end ---------------------------------------<br>
lists_first(_Pred,[]) -><br>
š š undefined;<br>
lists_first(Pred,[Element|Rest]) -><br>
š š case Pred(Element) of<br>
š š š š true -> Element;<br>
š š š š _ -> lists_first(Pred, Rest)<br>
š š end.<br>
<br>
%% --------------------------------------------<br>
%% @spec lists_nth(Pred,N,List) -> {Element, List}<br>
%%<br>
%% @doc Pick Nth element from List, for which Pred return true.<br>
%% @end ---------------------------------------<br>
lists_nth(_Pred,_N,[]) -><br>
š š undefined;<br>
lists_nth(Pred,N,[Element|Rest]) -><br>
š š case Pred(Element) of<br>
š š š š true -> case N of<br>
š š š š š š š š š š 0 -> Element;<br>
š š š š š š š š š š _ -> lists_nth(Pred, N-1, Rest)<br>
š š š š end;<br>
š š š š _ -> lists_nth(Pred, N, Rest)<br>
š š end.<br>
<br>
also have tired of copying in several projects.<br>
<br>
÷ ĐÉÓŘÍĹ ĎÔ ţÔ×, 25 áĐŇ 2013, 22:54 Fred Hebert ĐÉŰĹÔ:<br>
> Sounds to me like it would have been better implemented as something like:<br>
><br>
> init([_]) -> [];<br>
> init([H|T]) -> [H|init(T)].<br>
><br>
> As this would avoid re-building the list twice, once on each reversal.<br>
><br>
> Regards,<br>
> Fred.<br>
><br>
><br>
> On Thu, Apr 25, 2013 at 11:12 AM, Hans Svensson <<a href="mailto:hanssv@gmail.com">hanssv@gmail.com</a>> wrote:<br>
><br>
>> Hi,<br>
>><br>
>> Yesterday I implemented, for the umpteenth time, the init-function. (I<br>
>> guess being taught Haskell at one point could be blamed partly for the<br>
>> coding style requiring this function...) It is a trivial function that I<br>
>> think should be part of the standard lists module. This patch adds the<br>
>> function, tests in lists_SUITE, and documentation of the function.<br>
>><br>
>> The implementation is trivial: reverse(tl(reverse(List))).<br>
>><br>
>> If I've missed some religious reason for not having this function feel<br>
>> free to drop the patch ;-)<br>
>><br>
>> Cheers,<br>
>> Hans<br>
>><br>
>> git fetch<br>
>> git://<a href="http://github.com/hanssv/otp.**git" target="_blank">github.com/hanssv/otp.**git</a><<a href="http://github.com/hanssv/otp.git" target="_blank">http://github.com/hanssv/otp.git</a>>add_init_to_lists<br>

>><br>
>> <a href="https://github.com/hanssv/otp/**compare/erlang:maint...add_**init_to_lists" target="_blank">https://github.com/hanssv/otp/**compare/erlang:maint...add_**init_to_lists</a><<a href="https://github.com/hanssv/otp/compare/erlang:maint...add_init_to_lists" target="_blank">https://github.com/hanssv/otp/compare/erlang:maint...add_init_to_lists</a>><br>

>> <a href="https://github.com/hanssv/otp/**compare/erlang:maint...add_**" target="_blank">https://github.com/hanssv/otp/**compare/erlang:maint...add_**</a><br>
>> init_to_lists.patch<<a href="https://github.com/hanssv/otp/compare/erlang:maint...add_init_to_lists.patch" target="_blank">https://github.com/hanssv/otp/compare/erlang:maint...add_init_to_lists.patch</a>><br>

>> ______________________________**_________________<br>
>> erlang-patches mailing list<br>
>> <a href="mailto:erlang-patches@erlang.org">erlang-patches@erlang.org</a><br>
>> <a href="http://erlang.org/mailman/**listinfo/erlang-patches" target="_blank">http://erlang.org/mailman/**listinfo/erlang-patches</a><<a href="http://erlang.org/mailman/listinfo/erlang-patches" target="_blank">http://erlang.org/mailman/listinfo/erlang-patches</a>><br>

>><br>
> _______________________________________________<br>
> erlang-patches mailing list<br>
> <a href="mailto:erlang-patches@erlang.org">erlang-patches@erlang.org</a><br>
> <a href="http://erlang.org/mailman/listinfo/erlang-patches" target="_blank">http://erlang.org/mailman/listinfo/erlang-patches</a><br>
><br>
<br>
<br>
--<br>
Regards,<br>
Anton Fedorov<br>
Call2ru service<br>
E-Mail: <a href="mailto:datacompboy@call2ru.com">datacompboy@call2ru.com</a><br>
Jabber: <a href="mailto:datacompboy@call2ru.com">datacompboy@call2ru.com</a><br>
Skype: datacompboy<br>
ICQ: 272-35-262<br>
Mobile: <a href="tel:%2B7-913-925-7974" value="+79139257974">+7-913-925-7974</a> [SMS 24h, Call 05:00-19:00 MSKT (GMT+3)]<br>
<br>
_______________________________________________<br>
erlang-patches mailing list<br>
<a href="mailto:erlang-patches@erlang.org">erlang-patches@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-patches" target="_blank">http://erlang.org/mailman/listinfo/erlang-patches</a><br>
</blockquote></div>