I have not really have much to add to what Richard Walker wrote. I can
repeat the basic ideas:
The idea with the modules concept is to generalize, open doors, and not
to close any. If long names or submodules are not of any use for low level
development, do not use that in that programming. But adding ideas like
submodules and more sophisticated module processing can be difficult if one
does not consider certain snags at this point (like not mixing up module
and word separators).
The principle of a module defining its behaviour via a command \<module
name>/ (with an ending "/"), I arrived at by doing such module programming.
The parsing I showed was only an illustration how such an idea might be
used: After all, adding such a command does not burden TeX much, and if it
is too slow in some modules, it needs not to be used, one can still call
the names directly.
However, the point is that such a principle might allow for solutions
that otherwise might not be possible: Sometimes a slow solution is
preferred over none at all.
Also, not all developing takes place by first knocking out optimized
code: Often one first writes something that one is sure to work, and then
is doing the optimization. One example in TeX might be the use of
definitions with optional arguments: It is possible to make definition
commands that produce fairly general commands with LaTeX style optional
arguments that work in fairly general situations, but which are slow and do
not work in the perfect generality one would want for a built in LaTeX
command. But one could speed up developing by using such a definition
command, and if the command is not used often, it is no point for say an
user or casual developer to sit down trying to figure out how to do LaTeX
style low level parsing.
> > Speed perhaps: If a document can be processed in less than one second
> > instead of ten, that will always be a great advantage.
>It is a sobering experience to run any of DEK's stuff (articles etc.)
>through plain TeX. If only LaTeX ran that fast . . . .
LaTeX already has several very slow commands with slow parsing, for
example the variations of "new" with the LaTeX special style of defining
arguments. One way to speed up LaTeX would be a command "define" which
still checks if the command has been defined before, but otherwise uses TeX
>(or according to Hans - I need more convincing):
The only point with a terminating ":" would be to make it easier to know
where the argspec ends if one processes the command name. This could be
done otherwise by a convention that the argspec can only occupy one letter,
or if that does not give sufficiently many combinations, that if the first
letter is uppercase it is a two letter argspec, or something.
* Email: Hans Aberg <mailto:[log in to unmask]>
* Home Page: <http://www.matematik.su.se/~haberg/>
* AMS member listing: <http://www.ams.org/cml/>