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

Håkan Mattsson <>
Thu Jan 16 23:03:22 CET 2014


Or chop/1 to be compatible with Perl. ;-)

/Håkan

On Thu, Jan 16, 2014 at 2:54 PM, Robert Virding
<> wrote:
> Shouldn't be called liat/1 instead? Just joking.
>
> Robert
>
> ________________________________
>
> From: "Siri Hansen" <>
> To: "Hans Svensson" <>
> Cc: "erlang-patches" <>
> Sent: Thursday, 16 January, 2014 11:26:02 AM
> Subject: Re: [erlang-patches] Add lists:init/1 - got tired of implementing
> it
>
>
> 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 <>
>>>
>>> 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
>> 
>> http://erlang.org/mailman/listinfo/erlang-patches
>
>
>
> _______________________________________________
> erlang-patches mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-patches
>
>
>
> _______________________________________________
> erlang-patches mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-patches
>


More information about the erlang-patches mailing list