Here is another suggestion for the argspec:

  Instead of naming a command \<name>:<argspec>, for every command \<name>
that needs an argspec one defines another command named \<name>: which
expands to the <argspec> (or argspecs, if the same command name is allowed
to have several argspecs). This would be efficient in TeX as the command
\<name>: is only used when really needed. The process can also be automated
by having a special definitions command, say
    \define<argspec>:\<name><parameter>{definition}
which defines both \<name> and \<name>: at once.

  The argspec is then more easily available for manipulation.

  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/>