In a comp.lang.tcl posting [http://groups.google.com/groups?hl=en&selm=9nar8b%24le7%241%40bob.news.rcn.net] [Donald Porter] gives a very nice example of the freedom that the programmer gains through the proper use of namespaces. The example speaks for itself: ====== # Someone provides the thread package with a thread::shared command: namespace eval thread { namespace export shared proc shared {option args} {...} } # Author of the foo package has different opinions about names: namespace eval foo { namespace import ::thread::shared # Shared what? What a stupid ambiguous name! rename shared sharedVariable proc myLongCommandName {} {...; sharedVariable set counter 1; ...} } # Author of the bar package has yet a third view: namespace eval bar { namespace import ::thread::shared # Stpd thrd pkg gonna give me RSI. rename shared sv proc x {} {...; sv set x 1; ...} } ====== <> Arts and Crafts of Tcl-Tk Programming