On Friday 08 July 2016 09:40:12 Richard W.M. Jones wrote:
On Fri, Jul 08, 2016 at 09:10:51AM +0100, Richard W.M. Jones wrote:
> On Thu, Jul 07, 2016 at 06:08:43PM +0100, Richard W.M. Jones wrote:
> > On Thu, Jul 07, 2016 at 07:00:46PM +0200, Pino Toscano wrote:
> > > On Thursday 07 July 2016 17:30:03 Richard W.M. Jones wrote:
> > > > This adds imperative list manipulation functions inspired by Perl.
> > > > The functions are passed list refs which get updated in place.
> > > >
> > > > This allows us to replace some awkward pure functional code like:
> > > >
> > > > let xs = ys in
> > > > let xs = if foo then xs @ zs else xs in
> > > >
> > > > with:
> > > >
> > > > let xs = ref ys in
> > > > if foo then append xs zs;
> > > > ---
> > >
> > > TBH I've always found the "shift" and "unshift"
naming of Perl
> > > functions slightly awkward, but can live with them. (At least the
> > > new functions do the same as Perl ones.)
> >
> > I agree, but for consistency I thought it was better to keep those
> > names rather than trying to think up new ones which would be different
> > from everything else.
>
> Actually I forgot that C++ (STL vector, deque etc) have functions
> called push_front, pop_front, push_back, pop_back. Don't know if that
> would be better. Is it obvious what front and back mean?
IMHO yes, more than "unshift" (unshift from what, for example?).
That would be the attached patch.
LGTM -- note also the current solution is fine for me, as long as we
are using a naming already in the wild and not anything homebrew.
Thanks,
--
Pino Toscano