In Tcl, variable names can be almost any string of characters. However, taking full advantage of Tcl's free form variable names requires finesse and does not make for readable scripts. Other than its name, the other important aspect of a variable is its value.
Variable values can also be arbitrary strings.
You never declare a Tcl variable's type. The interpreter can infer that type from syntactical hints. Only after this substitution process is complete is the command executed. If this is a problem, and it sometimes is, then use curly brackets as shown in More about Substitution . You already know that constructs like while which control the flow of execution are implemented as procedures.