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 p310A5WO021608 for ; Fri, 1 Apr 2011 02:10:06 +0200 Received: (qmail 3628 invoked by alias); 1 Apr 2011 00:10:00 -0000 Delivered-To: GMX delivery to rainer.schoepf@gmx.net Received: (qmail invoked by alias); 01 Apr 2011 00:09:59 -0000 Received: from relay2.uni-heidelberg.de (EHLO relay2.uni-heidelberg.de) [129.206.210.211] by mx0.gmx.net (mx041) with SMTP; 01 Apr 2011 02:09:59 +0200 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [129.206.100.94]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id p31071Dd011167 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 1 Apr 2011 02:07:01 +0200 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 p2VM1O6h000426; Fri, 1 Apr 2011 02:06:49 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 1256507 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Fri, 1 Apr 2011 02:06:48 +0200 Received: from relay2.uni-heidelberg.de (relay2.uni-heidelberg.de [129.206.210.211]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id p3106mG1010125 for ; Fri, 1 Apr 2011 02:06:48 +0200 Received: from mail-gx0-f177.google.com (mail-gx0-f177.google.com [209.85.161.177]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id p3106gMl011119 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=FAIL) for ; Fri, 1 Apr 2011 02:06:47 +0200 Received: by gxk2 with SMTP id 2so1704250gxk.22 for ; Thu, 31 Mar 2011 17:06:42 -0700 (PDT) MIME-Version: 1.0 Received: by 10.150.171.5 with SMTP id t5mr3559316ybe.332.1301616401930; Thu, 31 Mar 2011 17:06:41 -0700 (PDT) Received: by 10.147.124.3 with HTTP; Thu, 31 Mar 2011 17:06:41 -0700 (PDT) References: <905C5ED0-6639-4DEB-95AC-A2FCB2C4491D@gmail.com> <935A1EA2-C971-4A3A-8DF4-6F890E0CFB32@gmail.com> <5256FD2C-CD53-4FF0-A405-5B8B2781E5EC@gmail.com> <19843.17637.935263.780194@morse.mittelbach-online.de> <19843.47932.785350.652072@morse.mittelbach-online.de> <7F71B7CB-A004-49DC-B178-D9CF58DA93A2@gmail.com> <08C15662-D17F-41A5-9709-CE0C244BF398@gmail.com> Content-Type: text/plain; charset=ISO-8859-1 X-Spam-Whitelist: Message-ID: Date: Thu, 31 Mar 2011 20:06:41 -0400 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Bruno Le Floch Subject: Re: expl3's seq_pop_right etc. To: LATEX-L@listserv.uni-heidelberg.de In-Reply-To: Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-GMX-Antispam: 0 (Mail was not recognized as spam); Detail=5D7Q89H36p6i75npGen84eVAEFK/syJmiNoEBJhgjYKpglu1TZLLw7xMZnJMXwBFy+Sxe D/AUQGQOurK3ezVJqUBFH0uN5pjmWoMfpyHp50EZ60/Y6hM43eiKLTaE/W0dI7nIn8+pr4SzneyH Jeytg==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: 6700 Hello all, Sorry for the delay, I got distracted by work, and then some expandable floating point calculations. It would be great to move on, and this means getting rid of the few places where "\seq_elt:w" and "\seq_elt_end:" are still used explicitly. Basically, I'd like to centralize the seq functions all into l3seq. Right now, "\seq_elt:w" and "\seq_elt_end:" are used in the following files (omitting test files). Frank can probably help for the xor bundle. =========== "xor/xo-place.dtx" defines "\seq_elt:w" to gobble its argument in order to stop the current trial: \cs_set_nopar:Npn \seq_elt:w ##1\seq_elt_end:{} I think that we can replace each occurence of that by <-trace> \seq_map_break: \seq_map_break:n { \trace_pop:n{xor_check_callout_after:n} } but I am not sure: the xor code is too complicated for me right now, and I don't when the "\xor_check_callout_..." functions are called. =========== "xpackages/xor/xo-trace.dtx" is easy: the offending line is \cs_set_nopar:Npn \seq_elt:w ##1\seq_elt_end:{##1\space} and we can give that a name, e.g. put \cs_new:Npn \seq_setup_display: { \cs_set_nopar:Npn \seq_elt:w ##1\seq_elt_end:{##1\space} } in l3seq, and use "\seq_setup_display:" in "xo-trace.dtx". ========== "xpackages/xor/xo-or.dtx": two places. First, \cs_set_nopar:Npn \seq_elt:w ##1\seq_elt_end: {##1,} \cs_set_nopar:cpx {g_xor_flush_ \g_xor_collect_flush_seen_num _classes_clist } {\g_xor_float_classes_seq} should be replaced by \clist_set_from_seq:cN {g_xor_flush_ \g_xor_collect_flush_seen_num _classes_clist } \g_xor_float_classes_seq adding \cs_generate_variant:Nn \clist_set_from_seq:NN {c} to "l3candidates.dtx". Second, at two places, "\seq_elt:w" is let to "\relax" in order to behave nicely under x expansion. The first one is %%% FMi tmp \cs_set_eq:NN \seq_elt:w \relax \cs_set_eq:NN \seq_elt_end: \relax \tl_gset:Nx \g_saved_float_state_tl { \cs_gset_nopar:Npn \exp_not:N \g_xor_floats_active_seq {\g_xor_floats_active_seq} } and can be replaced by \tl_gset:Nx \g_saved_float_state_tl { \cs_gset_nopar:Npn \exp_not:N \g_xor_floats_active_seq \seq_exp_items:N \g_xor_floats_active_seq } where "\seq_exp_items:N" is not f-expandable, just x-expandable, defined as \cs_new:Npn \seq_exp_items:N #1 { \exp_after:wN \seq_exp_items_aux:Nw #1 \q_recursion_tail \seq_elt_end: % no \seq_elt:w \q_recursion_stop } \cs_new:Npn \seq_exp_items_aux:Nw #1 #2\seq_elt_end: { \quark_if_recursion_tail_stop:N #1 \exp_not:N \seq_elt:w #2 \exp_not:N \seq_elt_end: \seq_exp_items_aux:Nw } The second place can be converted to using the same "\seq_exp_items:N". ========= Two more files, l3in2e/l3prg.dtx (quicksort) l3in2e/l3candidates.dtx (various fn) but I looked at the functions there, and I can cope with those easily, compared to the xor bundle. ======== Side comment: I found the following text in the doc of l3prg, but I couldn't find the function it refers to. % For the somewhat strange \meta{clist} type which doesn't % enclose the items but uses a separator we define it by hand % afterwards. Best wishes, Bruno