Received: from mailout-de.gmx.net (mailout-de.gmx.net [213.165.64.22]) by h1439878.stratoserver.net (8.14.2/8.14.2/Debian-2build1) with SMTP id p2HDj3A5032607 for ; Thu, 17 Mar 2011 14:45:04 +0100 Received: (qmail 15776 invoked by uid 0); 17 Mar 2011 13:44:58 -0000 Delivered-To: GMX delivery to rainer.schoepf@gmx.net Received: from relay.uni-heidelberg.de ([129.206.100.212]) by mimp001 with uismtp id LDkm1g00u4ax6kH01DktTa; Thu, 17 Mar 2011 14:44:56 +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 p2HDgbM5021893 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 17 Mar 2011 14:42:37 +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 p2HCr926021942; Thu, 17 Mar 2011 14:42:25 +0100 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 1253242 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Thu, 17 Mar 2011 14:42:25 +0100 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 p2HDgP9A021428 for ; Thu, 17 Mar 2011 14:42:25 +0100 Received: from mail-yw0-f49.google.com (mail-yw0-f49.google.com [209.85.213.49]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id p2HDgITA017527 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=FAIL) for ; Thu, 17 Mar 2011 14:42:24 +0100 Received: by ywa8 with SMTP id 8so1785907ywa.22 for ; Thu, 17 Mar 2011 06:42:18 -0700 (PDT) MIME-Version: 1.0 Received: by 10.236.200.227 with SMTP id z63mr1466881yhn.142.1300369338139; Thu, 17 Mar 2011 06:42:18 -0700 (PDT) Received: by 10.147.168.17 with HTTP; Thu, 17 Mar 2011 06:42:17 -0700 (PDT) References: <905C5ED0-6639-4DEB-95AC-A2FCB2C4491D@gmail.com> <935A1EA2-C971-4A3A-8DF4-6F890E0CFB32@gmail.com> <5256FD2C-CD53-4FF0-A405-5B8B2781E5EC@gmail.com> <19841.6013.376122.141695@morse.mittelbach-online.de> Content-Type: text/plain; charset=ISO-8859-1 X-Spam-Whitelist: Message-ID: Date: Thu, 17 Mar 2011 09:42:17 -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: <19841.6013.376122.141695@morse.mittelbach-online.de> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-GMX-Antispam: ; Detail=5D7Q89H36p6v0AUTgaMO3gSMywNLDaHlpe5peQ6qsI2JgHKusOTMLaihvhE8TTKimHjga 5W/Tp3mgU03YztsItFswZVXXWIi9bj308cgcLOwpoEsyhFkMxGbdB4LxnFYbcuIHQmQnV4tFyNzcQ2 1I+Qo/dJ8Rr1vSKZkmLd+jkMw9lTzvIRvO2NU7QoZNwgQmggo+14mDvzV7iIx+XNp4g==V2 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: 6678 Hello Frank, thank you for your time. > I took your package pushed it into my environment and first of all tried to > run our test suite against it. Of course that ended up in a huge number of > failures. I'm sorry about that. I'm couldn't get "make check" to work (on a clean svn download), and I'm investigating that (I probably misplaced some file, or permissions). So my testing is a bit klunky right now. > - first discuss it > - initially provide compatibly code > - and only at a later stage retire something Right. I should have double-checked: I lost quite a few variants along the way as well, and unfortunately, I was working from a version of l3seq which was a few weeks old. > there are a number of advantages to this most importantly for me that we can > run the test suite against the new code. So far I added After a manual grep (more or less), I think we need to add the following. % % \section{Compatibility} % % Getting elements from the left (top of the stack). % \begin{macrocode} \cs_generate_variant:Nn \seq_get_left:NN {cN} \cs_new_eq:NN \seq_get:cN \seq_get_left:cN \cs_new_eq:NN \seq_top:NN \seq_get_left:NN \cs_new_eq:NN \seq_top:cN \seq_get_left:cN % \end{macrocode} % % \begin{macrocode} \cs_new:Npn \seq_pop:NN #1#2 { \seq_pop_left_with:Nn #1 {\tl_set:Nn #2} } \cs_new:Npn \seq_gpop:NN #1#2 { \seq_gpop_left_with:Nn #1 {\tl_set:Nn #2} } \cs_generate_variant:Nn \seq_pop:NN {cN} \cs_generate_variant:Nn \seq_gpop:NN {cN} % \end{macrocode} % % Mapping functions % \begin{macrocode} \cs_new_eq:NN \seq_map_break: \seq_break: \cs_new_eq:NN \seq_map_break:n \seq_break:n \cs_new_eq:NN \seq_map_function:NN \seq_map_function:Nn \cs_new_eq:NN \seq_map_function:cN \seq_map_function:cn % \end{macrocode} % % Auxiliary functions (needed?). % \begin{macrocode} \cs_new:Npn \seq_remove_duplicates_aux:NN { \seq_remove_duplicates_aux:NNN \seq_if_in:NnF} \cs_new:Npn \seq_remove_duplicates_aux:n { \seq_remove_duplicates_aux:Nn \seq_if_in:NnF} \cs_new_protected:Npn \seq_put_aux:Nnn #1 #2 #3 { \tl_set:Nx #1 {\exp_not:n {#2} \exp_not:V {#1} \exp_not:n {#3}}} \cs_new_protected:Npn \seq_pop_aux:nnNN #1 #2 #3 #4 { \seq_pop_left_aux:Nnn #3 {#1} {#2 #4}} % \end{macrocode} % % Function that seems used in "l3file", but defined nowhere in % the current implementation?? % \begin{macrocode} \cs_new_eq:NN \seq_remove_all_in:Nn \seq_remove_element:Nn % \end{macrocode} % % Removed because I can't figure out any sensible way to support % those internal functions: % \cs{seq_map_variable_aux:Nnw}, % \cs{seq_pop_aux:w}, % \cs{seq_elt:w}, % \cs{seq_elt_end:}, % \cs{seq_get_aux:w}, % \cs{seq_put_aux:w}. Hopefully that's ok. Of course, if other modules happen to try and define their own seq functions using \seq_elt:w, then that's not going to work. > but that is not enough there are still several areas where the test files > for the seq module fail ... but on the whole the implementation looks > already good. If possible, could you send me a log of those tests that fail? It would help me find all the missing functions. > So I propose we first make your implementation support the current > interfaces (even if only by compatibility code) so that the files m3seq00... are > properly processed and in parallel discuss its individual merrits > and preferably we should at the same time write some additional tests for > any functionality that has changed or is additionally there (Joseph will tell > you that I'm pestering him about writing test cases in parallel wil code, but it > really helps to nail down interfaces and ensure that they aren't violated > later) As I said, I can't run "make check" right now. Is it possible to run single tests "by hand"? Then there is the issue of l3candidates, which I have not re-programmed yet, as well as the quicksort defined in l3prg.dtx Thanks again for your comments, -- Bruno