Arising from a discussion (on [Tcl chatroom] about the [denotational semantics] of tcl, the concept of ''tcl-null'' was proposed.
[MS] offers this pragmatic approximation of tcl-null:
set cmds [info command]
rename catch _catch
rename rename _rename
foreach c $cmds {_catch {_rename $c {}}}
_rename _catch {}
_rename _rename {}
but notes that [namespace]s also have to be cleaned up.
'''tcl-null Game'''
Starting with this as a base, the game is to come up with minimal subset of built-in commands which provide a useful (if not exactly usable) language from which many of the facilities of tcl can be built.
[CMcC] Sat 23rd Sep 2006. One such set is [apply] [set] [uplevel] [list] [lindex]. This resembles the minimal set of lisp functions necessary to construct classic lisp: (eval) (cond) (lambda) (quote) (car) and (cdr) from which McCarthy could construct/emulate classic-lisp.
This constructs [if] as:
proc if {c t f} {uplevel [lindex [list $t $f] [uplevel expr $cond]]}
The construction of [proc] or a near approximation is left as an exercise for the reader. :) [MS] says it can be done. I have no idea how.
----
[[Category Concept]]