Given Tcl 8.5's [{*}] expand feature, and an [Getting rid of the value/command dichotomy for Tcl 9%|%earlier thought experiment] about adding a leading `$` to every command, What would a system be like if it worked as follows - this notation: ====== set obj {...} set result [obj arg1 arg2 arg3] ====== ... would behave as if it had been written as follows in Tcl 8.5: ====== set obj {...} set result [{*}$obj arg1 arg2 arg3] ====== It obviously wouldn't be Tcl, since the variable and command namespace get mixed up when you start doing this. But suppose you didn't care (Tcl 3000!) - would it be ''useful? convenient? worth looking into?'' [MJ]: I am not seeing the use for the implicit `$`, is it so much trouble to write `$obj arg1 arg2 arg3`? Autoexpansion of the leading word would be very useful however (especially in OO type constructs and functional programming). It seems you are suggesting unification of variables and procs, which sounds a lot like the concept of slots in [Self Programming Language%|%Self], in that case `$` will become unnecessary. Getting the value of a var is simply [[var]]. [DKF]: This idea ("auto expand leading word") has been known about and discussed (on and off, when we've nothing else to do) for years. [JJS]: Isn't this a lot like [interp alias]? ====== interp alias {} obj {} ... ;# instead of set obj {...} set result [obj arg1 arg2 arg3] ;# works like {*}$obj ====== [NEM]: The difference is that variables can be local to a [proc]edure whereas aliases can't. With [apply] you can now have procedures that are stored in local variables, but not commands in general, and the syntax could be better. I wrote some thoughts about ways to accomplish the same thing in a hypothetical Tcl 3000 here [http://www.cs.nott.ac.uk/~nem/tcl/resources.html]. ---- [RS]: See [Let unknown know] how to tweak Tcl that it does auto-expansion of leading word... :^) <> Discussion | Design | Syntax