Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by h1439878.stratoserver.net (8.14.4/8.14.4/Debian-2ubuntu2.1) with ESMTP id t6HA15Ss007396 for ; Fri, 17 Jul 2015 12:01:07 +0200 Received: from relay2.uni-heidelberg.de ([129.206.210.211]) by mx-ha.gmx.net (mxgmx113) with ESMTPS (Nemesis) id 0LabqN-1YXfxF2UkZ-00mNsM for ; Fri, 17 Jul 2015 12:00: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 t6H9xbLn009711 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 17 Jul 2015 11:59:38 +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 t6H8SHh3028762; Fri, 17 Jul 2015 11:59:37 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 12354000 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Fri, 17 Jul 2015 11:59:37 +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 t6H9xbjp009176 for ; Fri, 17 Jul 2015 11:59:37 +0200 Received: from mxout.hzdr.de (mxout.hzdr.de [149.220.4.85]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id t6H9xVrd009805 for ; Fri, 17 Jul 2015 11:59:33 +0200 Received: from fz-rossendorf.de (cg.fzd.de [149.220.4.64]) by mxout.hzdr.de (Postfix) with ESMTP id 0AC3BBCA1 for ; Fri, 17 Jul 2015 11:59:31 +0200 (CEST) Received: from [149.220.65.84] (HELO fwo045.hzdr.de) by hzdr.de (CommuniGate Pro SMTP 6.1.4) with ESMTP id 10764602 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Fri, 17 Jul 2015 11:59:26 +0200 Received: by fwo045.hzdr.de (Postfix, from userid 1530) id 28871E86CD; Fri, 17 Jul 2015 11:59:12 +0200 (CEST) References: <55A8C0C2.3040908@morningstar2.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) Message-ID: <20150717095912.GA6487@hzdr.de> Date: Fri, 17 Jul 2015 11:59:12 +0200 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Alexander Grahn Subject: Re: expl3 boolean expressions: lazy evaluation To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <55A8C0C2.3040908@morningstar2.co.uk> 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:8nUccnMuE/k=:BRW/tAfgPklisuGCV6tmwXwSSD GUjg7jKBA1EylfJl7bGRrlzjgUBz7BJ1WVb3IuXiQe5qse4NUtqhcsYXOeWnTxlevU4Kcu0NR FbqqZ0NJ8sjmDsp5AaPJUStK8IMXHWi/dKIouSwYeIPXvS2cGWfO1O9e6YJ1VS54vozfXMxIn pya020MvuCSegza+eQM2qaUQmfyQe88xBenNTnKRJtCl4Qq52uvlsEX6ZvZ/jfdet2vsMi4K5 mBwdLOqh3+qfVjHZtW2doyfLV304lMZlejoTyJzcJ1ppphwaznMohJP1rolIJ3E0kA8zlpe83 M6JHly2GA+D3XBgO7B2Bh4MwyokJypuSO/pDMVdFw4wxpk1Q+sAaQ0dysJgm1lzPluczn0vxu FoNQJsn+qGiGaaZ0NnXJVfgoPsuNC5OHTkn2/TsmElTD8JuIXNf41Zl0qysops4FyqOfOPO3p q6a8Q7Cp3uXesaVKEnDIgbR6yRcMpUnsW7UqLvZ/iPpCP0VH8WM5euzYggw6m8dacdWl+A+mI Y/k7c+xyZWVdLAIHJbnuX+4QP9MAWJdmePTm7Ovl+VF4+eCFT+ZacHiNTnwxyOQI7/DQcOngR XGggSy9KB0GwBWR8J6ATDT6iGc9Pu1bgzoe2PPGC37TU1eCQqr0+LM7hSgb0oerdN20ZHaO7j DvNexWN2xC83g4TG7Tamzb0q5QqngGsLuCBgAtXdwAvC/imjF1RlNP/aVooNAaWaL3Uf8t7PM sEmMdWoShV06accmklX8C+Qw+e/Sk/Ulx80yxJr2OZYQeZmU75ZyFfSviLbZDnwGvw4BRiIo6 HV/Zvn5zrec8Gkr1wz8uV2UwPC/Z+mlVCc1UwwW09WJ5pOc1C3RKvm8FeA54yemJ16MnTv6Y1 z4cFlZSwuj/cCseegjK62vSpBree123+j+9FLu+62Fl2qPM4UnJ2QhLFdm3rHmsiqljr6CfmK 7BxsthDQKMDLSYJlSd1oEuxjRg7BRYudnxENExEHkBs4hzqy9PToRIwdyLJ94bMaKghRjm0Da LDPhsf1sITbiqDRHtqbUa5t52NXUUKRBPYXWi7xS7WPSNQWo3LDiqh8/xS8pZ+RcLuHoKjSMw UEip+d3CI4bfjVTcXFXPBi01wGxZNPf4mEdfKTD+Q+G22BCTwnnVbvD3o3Agvk5m/EddyjSm2 e6rHmn1iQry1qfjNLQ5qqULhDmZf4bn95tQkmK/K5hSc0pLO8r80P/yRTz97S+jf+xEF/wGPO NHrEIE5GVw30IRxGBpJR/qn69nCa4hhxNcCVOCz+hDN6wxeDztB3o1Bj0Ae7kkLGKVI84fQ+C /pijOml+f8owLz+t/lK4QcMrHoIrIBRDzMm3XR9NbNafDQw7RRArjbUBtUcYSKeGt1PMTMinN LZLaounHO/SqUhUtCwqhMBwJuor1kuKYLSEBKzdriXrNCD3qYvLXhgZv8qSMbe1Xaz+wLjERa K1pbHqSvy8bO1PpQuCbonJGZiN2VI= X-UI-Loop:V01:Pb2WPGDMVVc=:aKoebo/Y0oVnu2I8WO5R2nR4H0WA6y4cZR3P0WzL4/U= X-UI-Out-Filterresults: notjunk:1;V01:K0:d+37pnoPKJ4=:6h6z6Yj28FGTGzFyqvUHRp DRtY0ERboIihqRhH/ITGSqSOO2BLnbp115tYbizydhy4qSOvCaW1B6nlvRjxPaPU7Sck4Ospl dcjnTCY3Z0TV1+bOtL/dsxe+6qh8hJwNx2hrWlPE/lePEDx5eIoOu3pqJ44pCL6Wr3LIxseAh kLJPeoV83NjyMuxyFh5YxhXOyFuL7hVFCGuHY8kCT3xtVjjz3z5jCikdtw+Vw2piQiVEW3yBy +LLgq4yLzfdxBbshcFwRqQ5o/HiY2fKCRWSZnZpN4Wx8+fOe7dqpzMWTfgmf/kRsSUB51xZ7t K0DEsex5kTvo5AwwCaYqi3dPzD86c85tidWOv2fQJ4WYIUaI0rWgPWWzzxd69UCyPsapXpbpr xodPxeB0A60xoLfm1pMPSl49yM3urBfKmYUgUCwXSbOhkvvBy01/zbdFjXHyKHVD0yqPwJQ40 YW9Gt2orQ/8hiW67hLC9YcG2dRskh6DnFFk7jDWH3qmvQzpRrys/ X-Scanned-By: MIMEDefang 2.71 on 85.214.41.38 Status: R X-Status: X-Keywords: X-UID: 7789 Dear Joseph, On Fri, Jul 17, 2015 at 09:45:54AM +0100, Joseph Wright wrote: >Hello all, > >expl3 current provides the idea of expandable boolean expressions in the >form > > \bool_if:nTF > { > ( && ) || ... > } > >with lazy evaluation. However, as detailed in >https://github.com/latex3/svn-mirror/issues/217 there is an issue with >this: as parentheses are part of the syntax, any that are sent through >to the tests from 'above' can cause an issue. For example > > \cs_new:Npn \foo:N #1 > { > \bool_if:nTF > { > \token_if_eq_charcode_p:NN + #1 || > \token_if_eq_charcode_p:NN - #1 > } > >will fail if #1 is ")". This situation is clearly not ideal and we want >to find the best way to address it with minimal impact on real-world use >of \bool_if:n(TF). > >It seems that any fix requires some change of documented behaviour. In >particular, we note that the problem can be dealt with if we drop lazy >evaluation. However, that might impact on current use cases. An obvious >issue is that something like the code currently in the expl3 driver >selection > > \bool_if:nTF > { > \cs_if_exist_p:N \pdftex_pdfoutput:D > && \int_compare_p:nNn \pdftex_pdfoutput:D > \c_zero > } > { pdfmode } > { dvips } > >will fail as the second test will not be skipped. We note though that >this case is likely unusual: in general expl3 variables should be >declared before use so should. A quick sweep over TL2015 shows the >following packages would have to be updated following any change: > > - media9 > -ocgx2 > >(Other packages do use \cs_if_exist_p:(N|c) but not in a way which >relies on lazy evaluation.) > >Are there other obvious issues if we switch from lazy evaluation? If the >change is to be made we intend to work with package authors in advance >to make sure that users are not impacted. thank you for pointing out this. Could you please give me specific advice on the changes I will have to do? Kind regards, Alexander