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

Raimo Niskanen <>
Fri Jan 17 10:44:18 CET 2014


On Thu, Jan 16, 2014 at 02:54:55PM +0100, Robert Virding wrote:
> Shouldn't be called liat/1 instead? Just joking. 

Hey! That was my idea!
/ Raimo


> 
> Robert 
> 
> ----- Original Message -----
> 
> > 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


-- 

/ Raimo Niskanen, Erlang/OTP, Ericsson AB


More information about the erlang-patches mailing list