I work with the SAS macro language, which is very similar to the LaTeX macro expansion language. In that language, the scope (global vs local vs locally - global) is governed by a symbol status table, which is centrally defined. The status of the variable can be queried and defined, the status of the variable is defined by its first reference, and the default is local. In that way, much is quite similar to the LaTeX approach. The main difference is that there is a master symbol table which contains the status of all variables. Paul Thompson Professor and Senior Scientist Director, Methodology and Data Analysis Center Sanford Research/USD 2301 E 60th St N Sioux Falls, SD 57104 O: 605-312-6462 M: 618-974-0473 H: 605-332-1587 F: 605-328-0401 909 N. Charleston Circle Sioux Falls, SD 57110 605-332-1587 ________________________________ From: Joseph Wright <[log in to unmask]> To: [log in to unmask] Sent: Monday, July 22, 2013 10:10 AM Subject: Re: Propagation of 'global'ness On 22/07/2013 09:06, Michiel Helvensteijn wrote: > On Mon, Jul 22, 2013 at 9:43 AM, Joseph Wright > <[log in to unmask]> wrote: > >> Certainly see a point here, but on the other hand I'm not a fan of >> encouraging more and more data structures. Writing a full data structure >> module is non-trivial: in most cases, I'd expect people to be using >> combinations of the existing ones in an ad-hoc fashion for their purpose. > > That doesn't sound like someone who is creating a programming language. :-) > > Abstraction is the word. There are so many useful data structures out > there that you haven't even touched upon in the libraries yet. Graphs, > trees, priority queues, sets, multisets, tables, ... One can never > predict what a programming language will be used for. Certainly true, hence waiting with interest to see what Bruno has in mind about 'objects'. I was thinking more that if we look at other languages there are a limited number of data types, and for specialist applications you still have to use whatever 'base' types are available. Now, we of course really only have macros and TeX's build-in registers, but if we are allowed a little leeway then we come to the kernel-defined data types we already have. I've no real experience of other languages, though, so perhaps I miss something. What does one do in say C if the data structures available are not suitable? (I didn't think you could even add keywords in most languages, so adding data types seems tricky.) [BTW, I'd hope expl3 is used for 'typesetting', broadly :-) Bruno may want to pilot the Mars rover in TeX, but ...] > If you see a future in expl3 you should expect it to grow, and outside > developers to be a part of that. If you don't provide these kinds of > facilities, others will. That's the nature of TeX. Just look at > etoolbox, etc. Being more flexible will probably give you more control > in the long run. Grow certainly, but the question is at least in part whether that's at the programmers tools side or on the real business of TeX: typesetting and appropriate tools. -- Joseph Wright