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 q56JMavN012194 for ; Wed, 6 Jun 2012 21:22:37 +0200 Received: (qmail 20025 invoked by alias); 6 Jun 2012 19:22:30 -0000 Delivered-To: GMX delivery to rainer.schoepf@gmx.net Received: (qmail invoked by alias); 06 Jun 2012 19:22:30 -0000 Received: from relay2.uni-heidelberg.de (EHLO relay2.uni-heidelberg.de) [129.206.210.211] by mx0.gmx.net (mx022) with SMTP; 06 Jun 2012 21:22:30 +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 q56JHnWq023132 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 6 Jun 2012 21:17:50 +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 q56G5LfW031979; Wed, 6 Jun 2012 21:17:49 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 2049380 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Wed, 6 Jun 2012 21:17:49 +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 q56JHn8G032589 for ; Wed, 6 Jun 2012 21:17:49 +0200 Received: from ix.urz.uni-heidelberg.de (cyrus-portal.urz.uni-heidelberg.de [129.206.100.176]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id q56JHmNC023125 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Wed, 6 Jun 2012 21:17:49 +0200 Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by ix.urz.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id q56JHmmW027390 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Wed, 6 Jun 2012 21:17:48 +0200 Received: from plane.gmane.org (plane.gmane.org [80.91.229.3]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id q56JHdjW002520 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 6 Jun 2012 21:17:43 +0200 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1ScLja-0001OR-NQ for LATEX-L@URZ.UNI-HEIDELBERG.DE; Wed, 06 Jun 2012 21:17:34 +0200 Received: from 31-19-28-231-dynip.superkabel.de ([31.19.28.231]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 06 Jun 2012 21:17:34 +0200 Received: from marco.daniel by 31-19-28-231-dynip.superkabel.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 06 Jun 2012 21:17:34 +0200 X-Injected-Via-Gmane: http://gmane.org/ Lines: 47 References: <4FCE2B42.2090006@morningstar2.co.uk> <4FCF90E2.8090607@morningstar2.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: 31-19-28-231-dynip.superkabel.de User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 X-Spam-Flag: No X-Envelope-From: X-Spam-Status: No, hits=-2.10 required=5 tests=BAYES_00,L_P0F_UNKN,SPF_HELO_PASS, SPF_PASS Message-ID: Date: Wed, 6 Jun 2012 21:17:23 +0200 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Marco Daniel Subject: Re: Separating out 'public' and 'internal' functions/variables in LaTeX3 modules To: LATEX-L@listserv.uni-heidelberg.de In-Reply-To: <4FCF90E2.8090607@morningstar2.co.uk> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-GMX-Antispam: 0 (eXpurgate); Detail=5D7Q89H36p4wKdcM+Mw5ofD1NDlpc7xK8A9pxZbEaz2+3stgdKOmO+wj9nATNG/j9tCSD n2wdk+oVKI0/v8Gf/H0xP9WRvj6V1jLmKIlTgqpi/HCW/nyeAq94CHt3VpJxkUNu0iNcr5KKrvWZ pVbVH4CJL55iA82IuGQLfkAhVJn8Jl2N4AzA0XEhPhIqA7q3RVgOxTE14Y=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: 7067 Hi, the following points are my personal point of view. LaTeX3 want to separate into different layers. The core language is expl3. So before the next layers can be achieved the basement must be stable. However the points are not limited to the core language. It's also useful for package authors This introduction leads me to my points. It is useful to separate internal and global functions. + The code is more readable and the user knows which functions can be used or not. + The naming of auxiliary functions can be more natural + It's more object-oriented programming whereby some values will be returned. + Specifying auxiliary functions for one special task make it easier to find bugs (or features ;-) ) Of course I see some drawbacks which are more addressed to the LaTeX3 team. - Long decision process which function is local and which one is global. - Changes can lead to new bugs. The global drawback is the time which must be regarded in the schedule. However based on my small list and *own* opinion I think a clearer separation is a useful extension. Side note: As Paulo Cerada pointed out that it's quite common to see variables starting with _ which denote encapsulation. However I like a more clearer syntax like \i_foo_ whereby \i_ indicates "internal". This is the same like \l_ for local and \g_ for global variables. best regards Marco