Basic doubt in tcl



Hi All
I have one confusion
set a ss
puts {$a} ;# it will print $a (no substitution)

by this i get feeling anything in braces does not substitute by its
value
then why does expr {$a * 3} work? or same thing in catch command.

Sorry if it is an stupid question.
If any tutorial available on command execution mechanism in tcl please
give me link.
.