Received: from mout-xforward.gmx.net (mout-xforward.gmx.net [82.165.159.13]) by h1439878.stratoserver.net (8.14.4/8.14.4/Debian-2ubuntu2.1) with ESMTP id t7SLSMGS009688 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 28 Aug 2015 23:28:23 +0200 Received: from relay.uni-heidelberg.de ([129.206.100.212]) by mx-ha.gmx.net (mxgmx001) with ESMTPS (Nemesis) id 0M7HC2-1YkTAs4Buw-00wzIs for ; Fri, 28 Aug 2015 23:28:17 +0200 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 t7SLQTtB005173 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 28 Aug 2015 23:26:30 +0200 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [127.0.0.1]) by listserv.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id t7SG3NXQ021354; Fri, 28 Aug 2015 23:26:29 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 12576711 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Fri, 28 Aug 2015 23:26:29 +0200 Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by listserv.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id t7SLQT5w024839 for ; Fri, 28 Aug 2015 23:26:29 +0200 Received: from mail-ig0-f171.google.com (mail-ig0-f171.google.com [209.85.213.171]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id t7SLQMTb005153 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=FAIL) for ; Fri, 28 Aug 2015 23:26:26 +0200 Received: by igcse8 with SMTP id se8so29750346igc.1 for ; Fri, 28 Aug 2015 14:26:22 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.50.88.8 with SMTP id bc8mr5569222igb.46.1440797182211; Fri, 28 Aug 2015 14:26:22 -0700 (PDT) Received: by 10.36.81.201 with HTTP; Fri, 28 Aug 2015 14:26:22 -0700 (PDT) References: <55DBB7F6.1070307@clear.net.nz> <55DABA1D.3050706@morningstar2.co.uk> <55DCFDF7.7080305@clear.net.nz> <55DC05BF.1040505@morningstar2.co.uk> <55DC28E8.9090405@morningstar2.co.uk> <55DDFD0A.4000901@clear.net.nz> <55DDACCB.1070104@morningstar2.co.uk> <55DF523F.2050905@clear.net.nz> <55DF48BE.5030503@residenset.net> <55DF5276.7010500@morningstar2.co.uk> <55DF70B2.1090700@morningstar2.co.uk> <55E09AA8.6070100@residenset.net> Content-Type: text/plain; charset=UTF-8 Message-ID: Date: Fri, 28 Aug 2015 23:26:22 +0200 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Bruno Le Floch Subject: Re: Catcode changes To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <55E09AA8.6070100@residenset.net> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: Envelope-To: X-GMX-Antispam: 0 (Mail was not recognized as spam); Detail=V3; X-GMX-Antivirus: 0 (no virus found) X-UI-Filterresults: notjunk:1;V01:K0:2dRfrEQoX2Q=:tiDf5iQu3EXz4UTpeG68EDtesb 4Os2zvy/mRFozzAMEiEMNxyp9UczHUKON0i2387nu8l7SRliMaNF5vRFGQLxGjqDZLJQ04RJN jnYdV8APti/YZ+KuRavdcUfHiZgotticCJiH0RNxe3J/0Ru90NfRImyPQ3llhhusZSrkV+/Fs 0KVa6FfL8E9MW/sqCib+wZN+BJf7QoYstj3OVvnvBGyDqIkony2/xSO/ZgKl7xuZCfTskhvUe TZo2xGTEyFj40aheJfiheO8xd73A63rjJqW5hGzJFZIJEfKxKAuigRtXs+nq3ZNX63qR27Ggb 3hmj4+aKHIXNbYT2p5f2D7nznsL+I3dZLLZGINAMzCtJ9yQWygnPAF7vEsT0fjWd5+eCsgLlQ qcclH/TvaJfYdsh/JfjKt4CqIZRIRynNBAp397eFdWXShbInDD2X8GI1aySSEFJsyCY+SVLtn 2gKqc7cbvgQhm+LCfdAHPAM5sfGNOoqZro9AxMBTqf2/yo/hcSKSM0Ko0VGHqrbYgi/mw2PQC Fw17Hn83T5zmLMxdtJUXQ4y/KANrKOEXagkhYNnrTgTJg7Bpeb1361p+3G9o4N++Od3ZKYhfH jFgLW09VOaSQyyy4iQNN2BM9LWShSZMkTUqHSfqpkxet4tFwJzzIrBUEsiIRB1aMMLlTqtRw3 MVzRn+cNaOhB9uRocEcjIvqv9mY6qyj3TjTiHlqhiX/8eiEimm5zPp5MN9Br5hrY2ICZELvVd hvVu0DV59tIQHj3Mdwg+r0CWca5JuYkobnpqCjw37fgfQBECYWIjUvU+LxQTbqveenUxzbyrN lnOiviX1xwkyRMPSFdAS0l8NqpSRgxD0k9NrHho66tzZxzXcIsA2mHWvvHVDvg1I7e2JfFszb M0BqCCHBq2tpgoMlkqSnpjLwgqn+08mj7Bkie9qPrsl+0UZKDcY28wmHSRFcP8VcrZs3kZ4oh wHVXjERLVI/ldbwPBDzpcFQrqhc6h9LDlz5PXMSV+8I0mXkio0En2Hec+UPADXDQ6uojBo2Fx Qw7PbFEbddf7SGYhJ+kEBn7hTj+dkKQmU3D6RfqpOMk62nctY8zM/Hru/dd9yiPze3V2Ym19L QuGvFc+UhOqgalfAb1DanovBrKoGd0Qm6dZdZp2TnHKlVCgmqR/Au+4W2TdXtV3qm4/tf9wRI penKe64JCMmCDMg7jW9XS05SMitlRHUZXm/XAH+c/8OCavqpRFk4MY/BZiZY8xaZTl7zwoc53 9AyVdyR+XlPYVvQVdgFbbDQf2iqFNgS9uluVB00DUtQMXK4T3P/JPNQxh5Q9rdkG1kpikrjVy QU3vKOPsJhRf+exU7EY49xxAqbuedAarT5RsmDEhUOAFDZ7hzPHUiefMg5DjN5r68KZ3dZU/E qs9KGZgU0lzEfnr56SfcGFNetcWZd27sY2OWbfDaWUK9uwDJYNkf6vyXRsMUz2a66sXI/5jlE zq+b0zMgjw4Pdf4iSZ3wrpkaMFIhGId3XTOFafhtwb/ef83Fst X-UI-Loop:V01:VgPaj/7X60Y=:yuE1/1zVF6/MF6mX96u9KTheSr0vhIRYLPZx2hf8UbQ= X-UI-Out-Filterresults: junk:10;V01:K0:F8swWg/lfxM=:3l7xLtLmCGQTCFwi5hU+1Oza uxmLWJpJ14zqjc8m0zZnZ9ZhanDQabGD6+tg+3qGXMvVvK17XSiaz7auxsBrdSKDOftZxhfAt BPfkLuAYNmqwP0qw5Lh2IDnGMpyZ4GAvMenN+IYi6pAWb2nzygbgxXE/LIcYjTVxkikfLiv7Y XyM8fGcBtkf0DrcnzxHFWgycLnZ9sakabp3Zb8sQy/GE7v11fOYbduX/+Qy6dJguVM1+dyTEk Ilopqt7YhehcQ65xIBGHHs9BUeNEx4SLhZ6bUUHjKc/4Mue0kS06wZPzCAcF5a0VE3dtDc+7z NpiGdL7XOf0h08oA6ZuZLPU/dvoX4MgIdDSLZ2tLDYWtrLqGE+G2ubwn5syTUmxGfdOHFUubH gGRm0R6l38pohoWgzkrTRJMjoDI6GlPMyXjVmjT9BL41TrH7w2GzJtpkc0BSrae/DOZQgYuQs NafvVFa7Vcye5eN3r1UYw22EbSOcxWEwc2o7Ojd5go+YoD/8R3 X-Scanned-By: MIMEDefang 2.71 on 85.214.41.38 Status: R X-Status: X-Keywords: X-UID: 7856 >>> We do the same in xparse :-) > > Are you saying xparse handles _matching_ of _nested_ parentheses? Because > that is what I meant that I demonstrated. Using delimited arguments to grab > parentheses without considering how they match against each other is of > course a triviality, but also not useful for the problem considered. Joseph understood your point perfectly well. Xparse takes care of matching nested parentheses, and does that expandably too. It would be possible for Andrew to abuse xparse to grab his parenthesized group, but I am not sure whether I want to advise this or not. It would also be possible to simply copy the code, but finding out where this is done in xparse's code is non-trivial. I could also just provide code that does that, but it would take 30 minutes to get completely right and clean (the code needs to carefully preserve braces when grabbing delimited arguments, for instance). Using \tl_set_rescan:Nnn seems reasonable given the above. >>>> PS: I maintain that that approach to evaluating infix boolean >>>> expressions is far superior to what is currently offered in LaTeX3, but >>>> Bruno just seems to *love* his&&, with all its shortcomings. ;-) >>> >>> Will remind myself: as has been noted there is an issue with clearing up >>> certain tokens with the current lazy evaluation method. > > More fundamentally, I believe it only supports expandable tests. There is no > > need for a boolean evaluation logic to require tests to be expandable (and > nor does the logic itself need to be non-expandable). That is correct. We had internal discussions at some points and some people in the team felt that it was useful to know that boolean expressions were always expandable, hence that the lack of predicates for protected tests was a feature. This may have changed since. >> BTW, thread you mean starts >> >> http://article.gmane.org/gmane.comp.tex.latex.latex3/2719 >> >> I think the one you mean is >> >> http://article.gmane.org/gmane.comp.tex.latex.latex3/2754 > > Ah, that is correct. The main reason I didn't get back to those ideas of yours were lack of time at the time, not lack of interest. >> P.S. Boolean expressions are Morten's code, not Bruno's :-) > > Oh? I seem to recall Bruno posted repeatedly on it this summer, giving the > appearance that he was actively working on precisely that code. My bad, in > that case. I have indeed posted about that topic because lazy evaluation causes problems when the arguments of a predicates contain parentheses. Your approach (replacing && by and, || by or, and parsing using delimited arguments) does not solve that, nor can any approach where parentheses have a syntactic role while also being able to appear as unbraced arguments to predicates. E.g., ( \c_false_bool && \token_if_eq_meaning_p:NN ) ( ) will typically not be parsed correctly if any attempt is made to do lazy evaluation and jump from && (or "and" in your syntax) to a following ")". There are rare cases where the current LaTeX3 approach will work and an approach using delimited arguments will not. Bruno