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.
[Category ??]