FWIW, while in Tcl "everything is a string", that doesn't actually mean using things like numbers is slow. AIUI Tcl implementations actually use other datatypes behind the scenes as well, it just matches the semantics of "everything is a string". So if you take the string "1" and treat it as a number, Tcl will basically turn it into a number behind the scenes so it doesn't have to re-parse that number every time it's used.