Received: from mail.proteosys.com ([213.139.130.197]) by nummer-3.proteosys with Microsoft SMTPSVC(6.0.3790.3959); Thu, 27 Nov 2008 08:14:47 +0100 Received: by mail.proteosys.com (8.13.8/8.13.8) with ESMTP id mAR7EiSg002549 for ; Thu, 27 Nov 2008 08:14:45 +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 mAR7BNCC001172 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 27 Nov 2008 08:11:23 +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 mAQN182V022759; Thu, 27 Nov 2008 08:11:09 +0100 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 15.5) with spool id 172068 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Thu, 27 Nov 2008 08:11:09 +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 mAR7B9Mk029271 for ; Thu, 27 Nov 2008 08:11:09 +0100 Received: from rv-out-0506.google.com (rv-out-0506.google.com [209.85.198.238]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id mAR7B4Bl000634 for ; Thu, 27 Nov 2008 08:11:08 +0100 Received: by rv-out-0506.google.com with SMTP id k40so818813rvb.1 for ; Wed, 26 Nov 2008 23:11:03 -0800 (PST) Received: by 10.141.13.16 with SMTP id q16mr3278181rvi.272.1227769863591; Wed, 26 Nov 2008 23:11:03 -0800 (PST) Received: from ?129.127.15.244? ([129.127.15.244]) by mx.google.com with ESMTPS id g31sm2194980rvb.7.2008.11.26.23.11.01 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 26 Nov 2008 23:11:02 -0800 (PST) Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v929.2) References: <27990a880811191758x2a29ecb4m33d2dcead1f32093@mail.gmail.com> <859ec5630811200508x17ef357dvc7cf352f5bc1031f@mail.gmail.com> X-Mailer: Apple Mail (2.929.2) X-Spam-Whitelist: Message-ID: Date: Thu, 27 Nov 2008 17:40:59 +1030 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Will Robertson Subject: Re: \exp_after:NN To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <859ec5630811200508x17ef357dvc7cf352f5bc1031f@mail.gmail.com> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-ProteoSys-SPAM-Score: -2.599 () BAYES_00 X-Scanned-By: MIMEDefang 2.64 on 213.139.130.197 Return-Path: owner-latex-l@LISTSERV.UNI-HEIDELBERG.DE X-OriginalArrivalTime: 27 Nov 2008 07:14:47.0599 (UTC) FILETIME=[D49DB3F0:01C9505F] Status: R X-Status: X-Keywords: X-UID: 5471 Hi, Sorry for my delay in replying to this. Some context before my comments. I'm afraid I've only been able to thinking a little about the whole problem, but I wanted to jot down my thinking before it evaporated. IDEA 1: > I tried to address the situation with the E specifier, which is the > same as O except the braces are removed. [snip] IDEA 2: > Here's a crazy idea. What if in the argument specifiers, we use a > special symbol for denoting that the next argument is to be returned > without braces? Such as for example \exp_args:N!o or so which would > pass N unchanged and then ``unbrace'' the result of the o expansion. [snip] IDEA 3: > However, it is my feeling that for most practical purposes you only > wish to remove braces from the very last item in the expansion chain. > Therefore, a simpler naming scheme such as > \exp_args_u:NO > \exp_args_u:NNo > etc. > could be employed. *** In order of preference, I think I like idea 1, then 2, then 3. It seems like with the current system, we can't really anticipate every possibility of weird expansion that comes along. Arg specs n, N, w, D, e, E can be ignored for this discussion, so here's what's left: (since an 'n' argument has no added braces) o O x X C f d (While I notice this, I think we should change 'd' to 'u' -- say -- to avoid the similarity with 'D'.) (Another thing: I search for \\[a-zA-Z_]*:[a-zA-Z]*X and I don't think there are any 'X' variants defined anywhere, even in l3expan. I'll probably remove it from the expl3 documentation soon-ish.) 'e' and 'E' take the place of unbraced 'o' and 'O'. But that still leaves 'x' -- 'X' could now have a changed meaning to mean "unbraced" 'f' -- 'F' to follow the same logic 'd' -- Hmmm ('u' and 'U' might work) 'C' -- Hmmm (And what about the hypothetical "make csname and expand twice" scenario, etc.?) So it looks like it gets pretty messy dealing with all these extra letters. In which case Morten's '!' idea sounds pretty good. Generally I'm somewhat opposed to referring to the handling of the arguments in the main name of the function. But my thoughts are all fairly uninformed, without much experience of actually writing any expansion code. Must run with this email slightly unfinished, Will