Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) by h1439878.stratoserver.net (8.14.2/8.14.2/Debian-2build1) with ESMTP id s3EDXWoE002778 for ; Mon, 14 Apr 2014 15:33:33 +0200 Received: from relay2.uni-heidelberg.de ([129.206.210.211]) by mx-ha.gmx.net (mxgmx005) with ESMTPS (Nemesis) id 0MP1vj-1WeNyj1FBv-006PXz for ; Mon, 14 Apr 2014 15:33:27 +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 s3EDUXRw023185 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 14 Apr 2014 15:30:34 +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 s3ED1UnU014005; Mon, 14 Apr 2014 15:30:33 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 10875563 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Mon, 14 Apr 2014 15:30:33 +0200 Received: from relay2.uni-heidelberg.de (relay2.uni-heidelberg.de [129.206.210.211]) by listserv.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id s3EDUX8P016477 for ; Mon, 14 Apr 2014 15:30:33 +0200 Received: from csep02.cliche.se (csep02.cliche.se [195.249.40.184]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id s3EDUL2J023010 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 14 Apr 2014 15:30:24 +0200 Received: from nova-2.local (unknown [130.243.94.123]) by csep02.cliche.se (Postfix) with ESMTPA id BFBE6729BD for ; Mon, 14 Apr 2014 15:30:19 +0200 (CEST) User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; sv-SE; rv:1.9.2.28) Gecko/20120306 Thunderbird/3.1.20 MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-MIME-Autoconverted: from quoted-printable to 8bit by listserv.uni-heidelberg.de id s3EDUX8P016478 Message-ID: <534BE2F5.6020603@residenset.net> Date: Mon, 14 Apr 2014 15:30:29 +0200 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: =?ISO-8859-1?Q?Lars_Hellstr=F6m?= Subject: Variable functions, or function-valued variables To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: Content-Transfer-Encoding: quoted-printable X-MIME-Autoconverted: from 8bit to quoted-printable by relay2.uni-heidelberg.de id s3EDUXRw023185 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:6aF8jh3XJwk=:yCQ8U00WrK2ftRXlgkSC/bI1Tq spWdgHhWPdbGzjCVyjaDQW7mmoFA4ZABC1gxdBoEkB4XcoS/m7c2WYMzyc2iDJFiqdhzgkeev OGT5jsIgkesc66qCDfBDVq+L5PAwIEAj7snqZzhERSz3fRDrxX6X1XfetFYw7AfKGjvaejvyL iNIP/oIGWIH4hj2/mnrBx+m7MXbKlW9DLhWIMPhOh3Sxa+5vFRIdgRK7ZBpl5MmsPJa2K87XA xlmCUWIOms4XPwKHWIUcXhjp4qtbk+IspHCR70zzHCGKSbA91F3J5a9RSCljYOmCotFx3hw6/ XM0eXaObKjG9E45k4tbLHASG6bUwHKdfzr/E0n0JEkRu1ZVqGPM8w8zbikTatVkd3ZE7gPD3Z c5VPQFVsdb7LHUGCX1QzvKvWd5pKJgRmE6bLQIiqNMqPAHXr12b/RV3FpmiDMtFpLlYxDmrNe lP44CX1Ox94K5G3OiFolj9GX/vpCHJ20XYP+dldx+IAe0O+LFg9eF30j5SeMv7XO5UIQETwQ1 vFa/pZMrd+AxonFYy4s6qYYb42hLDyQW+O4PosBoahkuipYz4p0P091R/pqLENJ7ryWTYWgSa gQXJUzGDDysdvjEpykrQrzGXNwx16IF/7inb85qLfi6lwybvo8esM4J0wFMOZdfv8RWr1E9uD rHj0g/jfkkvtvg3WMeQkFD55+noxUhW+PpzGQN7m7kA2/W5jv77QCmdNLpptWqa86fGRIInzJ OAMxrFmtqAJskyNb46LF3TF94n0OixoYSwLJ+jXP+L9Gt8D0A00dx4HdLev4dg2p0u98iss5J 6LpuNT5n2/vW2rgcVDXfsLgocFF4PIJTCMHlblOFoxd2WkgUDc1dhK2b3gx+EovQqgckTqXC/ v3LGAPU4EF+4hcMK8V18ppmAx1uA6GtAYR4HkUnjZq/XcbEHizijsUe1t49qTB7eTDZlQfgsL ThYPSLOPqsskxxds43wVPIM9tPERaFZSHYpVsNp9zJsqwj5myjI1Psk+lQkRpmLwOR6mzBn9U a9gw9b0h8RSdymaRsKFbKbtDvkpiXvKEMQeMTJT6fAI3CA57zEHKYqqSrhxqcWNzxorJaFN65 a61s1nQsAUlMxNDi/TT5kBiuJcTAvpyrY5iMnfZMMVpxdjVIGfNw3GNY4xbeRqlR0Rvxovv3M 3LT0z9rrzlGsxlGRGCnayo+lAnxUEzIbfVsthpX/M/skOlXmG0Uoz9LN1mbmqhd1UBcZzO64m bG7cRiw24Fw6ApA2Tn2UixfpkeWoLx6XgwZypZHwKRwOCDZX0l2N2gxHdnKEk3lSzDjrqeUS2 /qUCMeJaKObg2IJtjnoxqo0jsIZzNvNIgqoDw2qRsBhf59R1j+nu4Ar7k9BnzU23u7qgSD8I4 4AlG/LCE3ywfBgFIldZiMJZkAQD4KiJaDrNr0WAt4CzOwsOVfSt17+kJBpiii+R1oTZ3FrvZX AIJZ6bIw== X-UI-Loop:V01:1K6ibL4qoSk=:DpP6jsM8GmKBrVC9028wLi4HMOcGmLfzOLltpOYGL+k= Status: R X-Status: X-Keywords: X-UID: 7368 I just noticed another point where the expl3 naming rules doesn't say wha= t=20 to do: what if I have a variable that is also a function? In traditional=20 imperative languages those may seem like exclusive categories, but in=20 (La)TeX programming it is sometimes perfectly natural, and quite=20 straightforward. The typical example of this would be a callback function: something that = a=20 module calls at specified points, but which the user of that module is=20 expected to define. Treating this as just a function loses the specificat= ion=20 of the scope for that variable. Treating it as a variable of type tl lose= s=20 the specification that it takes arguments. What I found natural is to use= a=20 name of the form \__: e.g. \l_harmless_callback:nn This could be interpreted both as adding a SCOPE part to function names (= the=20 vast majority of functions without a SCOPE are implicity considered to be= c_=20 constant), or alternatively as proclaiming any : to be a valid=20 _ for a variable. Lars Hellstr=F6m