Earlier quoted context omitted.
But TCL actually goes beyond that. Most languages of this sort, like Smalltalk, Lisp, and especially slower, more liberal implementations like PicoLisp, allow for compile-time and/or runtime AST transformation, and other sorts of metaprogramming. in TCL, everything is a string. Or at least, everything behaves like a string in the proper context. When you pass code blocks into a command (like if, or while, or whatever…
Smalltalk just like Lisp has very little syntax, almost everything is built on messages, including data type creation, conditionals and loops, among other things. Also you can at any time just completely replace one object by other via the becomes: message. There are also some cool tricks when metaclasses are used, many of each one can see in Python as well.
However, you know ST better than me. Am I right?