[erlang-patches] Add lists:init/1 - got tired of implementing it

Hans Svensson <>
Wed Jan 22 23:14:23 CET 2014


Finally got around to do the fixes. Screwed up my git branch, so the 
lists:droplast/1 is now in a differently named branch:

git fetch git://github.com/hanssv/otp.git add_droplast_to_lists

https://github.com/hanssv/otp/compare/erlang:maint...add_droplast_to_lists
https://github.com/hanssv/otp/compare/erlang:maint...add_droplast_to_lists.patch 


A separate patch with usage will follow as soon as I can find the time 
for it!

Cheers,

Hans

On 2014-01-16 11:26, Siri Hansen wrote:
> Hi Hans!
>
> After many and long discussions we have now decided to re-open this
> patch and approve it with some comments:
>
> 1. we would like the name of the function to be 'droplast'.
> 2. we want the simple recursive implementation with no special handling
> of bad arguments, i.e. we think it is ok with a function_clause error
> for arguments that are not non-empty proper lists.
>
> Would you mind doing these adjustments in the patch?
>
> Best Regards
> /siri
>
>
> 2013/5/21 Hans Svensson < <mailto:>>
>
>         Hello Hans,
>         I've got some feedback on your patch after review:
>         We have decided to reject this patch as we don't see a general
>         need for
>         the new function.
>
>         Thanks for showing interest in contributing!
>
>         --
>
>         BR Fredrik Gustafsson
>         Erlang OTP Team
>
>
>     That is sad news, and we find it a bit strange since *you* (as in
>     the OTP team) yourself seems use this particular function/pattern
>     quite frequently. We did a quick search through the OTP code base
>     and found quite a few places where this particular function is
>     either implemented recursively and used, or just uses
>     reverse(tl(reverse(List)))). Also interesting to see is the
>     different names used: first, butlast, but_last and remove_last_element.
>
>     Code implementing the "init"-function:
>     compiler
>        v3_core:first/1
>        v3_kernel:first/1
>     dialyzer
>        dialyzer_contracts:but_last/1
>        dialyzer_gui:butlast/1
>     hipe
>        hipe_icode_type:butlast/1
>     orber
>        orber_interceptors:remove___last_element/1
>
>     Direct uses of reverse(tl(reverse(L))):
>     sasl
>        in systools_make:smart_guess/3
>     wx_gen
>        in wx_gen:erl_skip_opt2/4
>     ssh
>        in ssh_sftpd
>
>     Any further comments on this, it is really not a "new" function it
>     is a missing function ;-)
>
>     Cheers,
>
>     Hans
>
>     _________________________________________________
>     erlang-patches mailing list
>      <mailto:>
>     http://erlang.org/mailman/__listinfo/erlang-patches
>     <http://erlang.org/mailman/listinfo/erlang-patches>
>
>



More information about the erlang-patches mailing list