proc watch {varnames key op} {
if {$key != ""} {
set varname ${varnames}($key)
}
upvar $varnames vari
puts "$varnames is $vari (operation $op)"
}
# ---------------------------------------
trace variable valuea w watch
trace variable valuea r watch
# ---------------------------------------
puts "Give me a big number: "
set valuea 3
while {$valuea > 100} {
set valuea [expr $valuea / 2 - 2]
}
puts "final value is $valuea"