[Larry Smith] [stacking]? [Sly]: Example of overloading proc by arguments count proc overproc {n p b} { # define dispatcher uplevel [list proc $n {args} [string map [list %N $n] { uplevel [list "%N with [llength $args] args"] $args }]] # define the function itself uplevel [list proc "$n with [llength $p] args" $p $b] } Let's check it: overproc X {} { puts ABC } overproc X {a} { puts "xyz $a" } overproc X {a b} { puts "qwe $a $b" } X X 5 X q w Output: ABC xyz 5 qwe q w TODO: Work correctly with "args" list ---- [ro] 2007-12-06 : Interesting. Small, simple, and clear. Everytime overproc is used it redefines the dispatcher. You mention working correctly with 'args'. But what would it do with args? Would it send it to X {}, X {a}, or X {a b} ? It's not clear what 'working correctly with args' entails. I like it as is. Any further reworking of the code should be seperate, you would lose the simplicity and clarity. You used [string map] to substitute within {}'s, I usually use [format]. Nice work :) ---- %| [Category Example] |%