from a posting on news:comp.lang.tcl by Paul Duffin (much more of his thoughts is on http://people.manchester.ac.uk/~zzcgudf/tcl/future.html ):
Syntactically / Semantically
It came to me in a flash this weekend: The Tcl Way is the relentless exploitation of ambiguity.
The answer to both of these questions is "All of the above."
It seems to me that the secret of the Tcl way lies in creating strings whose overt meaning is inherently ambiguous--and exploiting that ambiguity without mercy.
20nov02 jcw - That sounds more sneaky than need be, IMO. It's really highly "natural":
We tend to deal with things in exactly the same way in real life. A word can be an item and the start of a list depending on context only. We don't change the way we write down things when switching from one to many "items" (well, actually we do add hints, many people start to "bulletize").
In other words, words have multiple meanings, but even whether something is a list is often determined from context. No one would consider this sentence a list. But:
No one would consider this sentence a list
... looks much more like an enumeration, all of a sudden.
20no02 WHD - I agree that it's highly natural--but it's far from the norm in computer languages. But really, I posted that on c.l.t mostly because I think it's 1) true and 2) amusing. I'm not at all sure it's helpful for newcomers to the language.
2002-11-20 RS: They should be aware of the fact that there's only strings ("data typing is an illusion"), and views on how to interpret these strings - in Clif Flynt's example
set set set
the parser interprets the first "set" as command name, doesn't bother about the other two, and calls set with them. set interprets its first argument as variable name, looks it up or creates it, and assigns it the second argument as value. This "parser thinking" makes understanding Tcl much easier than experiences with other languages.. so newcomers should be hinted at it early. (Oh, and I love Tcl because it is "far from the norm in computer languages" - if ever there is one that covers LISP, APL, Fortran, C++..)
Neat, "set set set" is a great example to explain things with -jcw
See also The Tao of Tcl