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 style parameters. >(or according to Hans - I need more convincing): > > \hierarchical/path/to/module/perhaps_with_underscores/macro_name:argspec: 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. Hans Aberg * Email: Hans Aberg <mailto:[log in to unmask]> * Home Page: <http://www.matematik.su.se/~haberg/> * AMS member listing: <http://www.ams.org/cml/>