In tcl threads 2.1 question? , comp.lang.tcl, 2001-09-05, 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; ...}
}