zsh-workers
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: zsh-workers@zsh.org
Subject: Re: array prepend
Date: Wed, 16 Jan 2013 21:00:08 -0800	[thread overview]
Message-ID: <130116210008.ZM22370@torch.brasslantern.com> (raw)
In-Reply-To: <87mwwbfw7q.fsf@lwm.klanderman.net>

On Jan 14,  1:36pm, Greg Klanderman wrote:
} Subject: Re: array prepend
}
} >  	VAR[]=(this is prepended)
} 
} So that's the same as VAR[1,0]=(...) ?

Well, no, because VAR[] would work regardless of KSH_ARRAYS.  But I
confess I'd forgotten about reversing the indices like that.

For those in the audience, Greg has just reminded me that you can in
fact "splice to the left" by using indices in decreasing order; and
for zsh-mode arrays there is an empty slot at zero, which you can't
reference by itself, but which is allowed in a range expression.  So
in those circumstances

    VAR[1,0]=(this is prepended)

} It doesn't really "look" very much like prepend to me.

I chose it to "look like" splicing something into an "empty" index.
If we pretend there's an empty index at each end of the array, ...

} >  	VAR[]+=(this is appended)
} >  	VAR+=(short for 'VAR[]+=')
} 
} Does VAR+=($x) differ at all from VAR+=$x if VAR is an array?

Only when $x substitutes more than one word.
 
} I was thinking of maybe '++=' for prepend, the double '+' weighting
} towards the front.

That would be OK as well.  However, it occurs to me that we could allow
VAR[] to work for associative arrays; a special case in which you *are*
permitted to set a so-called slice, because there's nothing to replace
and no order required.


  reply	other threads:[~2013-01-17  5:00 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <50EFB80D.30002@sergio.spb.ru>
     [not found] ` <22417.1357954693@thecus.kiddle.eu>
     [not found]   ` <20130113185141.4394d532@pws-pc.ntlworld.com>
2013-01-14  1:50     ` Bart Schaefer
2013-01-14 15:48       ` Oliver Kiddle
2013-01-17  5:02         ` Bart Schaefer
2013-01-14 18:36       ` Greg Klanderman
2013-01-17  5:00         ` Bart Schaefer [this message]
2013-01-17 14:52           ` Greg Klanderman
2013-01-17 15:49             ` Bart Schaefer
2013-01-19  7:53             ` Han Pingtian
2013-01-19 16:41               ` Bart Schaefer
2013-01-20 11:08                 ` Han Pingtian

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=130116210008.ZM22370@torch.brasslantern.com \
    --to=schaefer@brasslantern.com \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).