[DKF]: What is the very minimum set of Tcl commands? Here's an attempt to define them: string: You have to have some tools to manipulate strings, match them, etc. Could probably leave some parts of this command out. expr: You ''must'' be able to evaluate expressions. catch: You ''must'' be able to trap errors. "loop": While you can use [expr] to construct [if], looping is the only way to get to Turing-completeness (assuming we don't have a very deep stack, as is usually the case!) This could be a simple infinite loop though, with [break] to terminate it. return: Speaking of which, we do not need [break] (or [continue] or [error]) if we have this command. proc: It's not Tcl if you can't create your own commands! uplevel: This is critical to being able to make your own control constructs, and it is a clear defining feature of how Tcl really works. Also subsumes [eval]. rename: All Tcl commands are renameable, and that's vital to how much of the language works internally. set: Need to be able to set variables. unset: Need to be able to remove variables. upvar: This subsumes [global] and [variable], and is also tremendously useful for control constructs again. "basic IO": The aim with this is to build enough to support [source], though that command is so simple to reimplement in Tcl that it can't be fundamental. However, a minimal command set need not support writing files. info: Introspection is a key feature of Tcl, but quite a bit of this command (like [string], as mentioned above) can be omitted. unknown: Technically, you don't need to have this. But you ''do'' need to have plumbed in support for it; it's the final key defining factor of the language. Note that there are no list commands; they are reimplementable in terms of string manipulation (though that'll be slow, of course). ---- [[Category ??]]