Received: from mx0.gmx.net (mx0.gmx.net [213.165.64.100]) by h1439878.stratoserver.net (8.14.2/8.14.2/Debian-2build1) with SMTP id p0P9brkI021810 for ; Tue, 25 Jan 2011 10:37:54 +0100 Received: (qmail 30009 invoked by alias); 25 Jan 2011 09:37:48 -0000 Delivered-To: GMX delivery to rainer.schoepf@gmx.net Received: (qmail invoked by alias); 25 Jan 2011 09:37:46 -0000 Received: from relay.uni-heidelberg.de (EHLO relay.uni-heidelberg.de) [129.206.100.212] by mx0.gmx.net (mx049) with SMTP; 25 Jan 2011 10:37:46 +0100 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [129.206.100.94]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id p0P9Zhuo015425 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 25 Jan 2011 10:35:43 +0100 Received: from listserv.uni-heidelberg.de (localhost.localdomain [127.0.0.1]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id p0P9X3TA029812; Tue, 25 Jan 2011 10:35:41 +0100 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 872801 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Tue, 25 Jan 2011 10:24:40 +0100 Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id p0P9OdwX007327 for ; Tue, 25 Jan 2011 10:24:39 +0100 Received: from mta1.cl.cam.ac.uk (mta1.cl.cam.ac.uk [128.232.25.21]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id p0P9Nlm2019019 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 25 Jan 2011 10:23:55 +0100 Received: from slogin-serv3.cl.cam.ac.uk ([128.232.16.53] helo=cl.cam.ac.uk) by mta1.cl.cam.ac.uk with esmtp (Exim 4.63) (envelope-from ) id 1Phf7r-0006wE-Jy for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Tue, 25 Jan 2011 09:23:47 +0000 X-Mailer: MH-E 8.0.3; nmh 1.3; GNU Emacs 22.2.1 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by listserv.uni-heidelberg.de id p0P9OdwX007328 Message-ID: <3986.1295947424@cl.cam.ac.uk> Date: Tue, 25 Jan 2011 09:23:44 +0000 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Robin Fairbairns Subject: Re: \clist_length:N and \clist_nth:N To: LATEX-L@listserv.uni-heidelberg.de In-Reply-To: Your message of Tue, 25 Jan 2011 08:47:00 +0000. <4D3E8E04.8000802@morningstar2.co.uk> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-GMX-Antispam: 0 (Mail was not recognized as spam); Detail=5D7Q89H36p6i75npGen84eVAEFK/syJmFuaL1OLtauwJ5R/kaZ9HAe8peGX1DeqJL7BW4 1X28hmBsSaikXt0ebYfUaHmtXkk7HChP+4IT8tI+yodefY66PMpp/kPudTSzX7BVqDxUGU4uAf/y ckanA==V1; X-Resent-By: Forwarder X-Resent-For: rainer.schoepf@gmx.net X-Resent-To: rainer@rainer-schoepf.de Status: R X-Status: X-Keywords: X-UID: 6572 Joseph Wright wrote: > On 24/01/2011 14:01, Lars Hellström wrote: > > Isn't this "elt" an implementation detail for that type of list (various > > \@elt tokens in 2e come to mind), and thus something that should be kept > > internal rather than canonised in a public interface? The clean solution > > for *both* types of list is rather to use "length". > > Seems reasonable: one would normally talk about 'a long list of things > to do', so lists to have 'length' :-) in some ways of looking at a list, it has 'length'. in plain english, i would say lists have "items" (or just "things") rather than "elements", but "item" is already heavily overloaded in the user's level latex-ese. i don't have a problem with "element" (or "elt" in command names). > > Moreover, I get a vague impression that the term `elt' is part of the > > pseudo-LISP heritage of LaTeX (emphasis on the "La"). If so, then that > > is IMHO another reason to avoid it, as that heritage is full of square > > pegs trying to fit in round holes. > > Not being familiar with Lisp, I can only go on things like LaTeX2e's > \@cdr, etc., which have much more sensible names in expl3. the "lisp heritage" is no more than simple use of some lisp names for some latex internal operations (e.g., car, cdr). it's a long time (>40 years) since i learned lisp, but i don't remember a special name for items in a lisp list. > >> I didn't write "clist_nth" with a view of it being the permanent name, > >> but > >> now that I've written it I can't think of a (good) alternative. Any > >> thoughts? > > > > I think the verb you're looking for is "index", i.e., the command name > > would be clist_index. hmm. index works, but i don't think it supports the "plain english" test. > I'd imagine 'index' to be the other way around: > > \clist_index:Nn \l_some_clist { item } => Number agreed. > whereas what Will has implemented gives the 'entry', 'element', 'item' > or some such name. ('element' seems to be discouraged based on the first > part of your e-mail, so perhaps 'item' is better.) i think element is as good as it gets, in this context. > > first: Return index of first occurrence of a particular item within a > > clist, > > or -1 (given 0-based indices) if the item does not occur therein. > > last: Return index of last occurrence of a particular item within a > > clist, > > or -1 (given 0-based indices) if the item does not occur therein. > > (Note: Slightly trickier to implement.) > > Both of these look relatively easy to do. > > > range: Return a subrange of the clist, i.e., if \a_clist is "a,b,c,d" then > > \clist_range:Nnn\a_clist{1}{2} returns "b,c". (I don't have an > > opinion as to what might be the best sense of "return" in this > > case.) > > replace: Replace the material in a subrange of the clist by some other > > clist material. > > More tricky. Let's sort the others first :-) robin getting better every day. very slightly.