On May 21, 2018, at 5:32 AM, Ryan Schmidt <[email protected]> wrote: > > Yes I'm talking about $xcodeversion, and I'm wondering why we don't have a > corresponding $macports_version. Why do we have to call a procedure to get > the MacPorts version, when we don't have to call a procedure to get the Xcode > version?
I could hazard a guess at how that came to be, but I’ll assume that you’re wondering why it can’t be otherwise. The answer, of course, is that it could. The cleanest way of defining a global const variable that I’ve come across is with trace, tying the variable to a write command with an explicit error message <http://wiki.tcl.tk/398>. But the Tcl wiki page that I linked to previously notes that "command names are the natural choice for constants: they live in a separate namespace to variables; they are rarely redefined, and few commands do so; global commands are available everywhere without importing; they offer the possibility of byte-code optimization, i.e. inlining (no idea if this is or could be done).” -AM
