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

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