A C-preprocessor-like macro substitution mechanism for Tcl source code. ( Documented at http://smilax.org/126 ; Download from http://www.smilax.org/126/cmacro.tcl ) Sample Code: Here are three sample macros, "hd", "tl", and "tlN": cmacro::define hd X {[lindex X 0]} cmacro::define tl X {[lrange X 1 end]} cmacro::define tlN {N X} {[lrange X N end]} Here are two procs (defined with mproc, to expand the macros) that use the above macros: cmacro::mproc second list { return hd< tl<$list> > } cmacro::mproc tailN {n list} { return tlN<$n, $list> } Here is what those "mproc" commands actually call to create procs: proc second list { return [lindex [lrange $list 1 end] 0] } proc tailN {n list} { return [lrange $list $n end] } ''See also:'' [macro] <-- Notice [Sugar] and [Tmac - a Tcl macro processor package%|%Tmac] both do roughly the same thing. <> Performance