On May 22, 2018, at 00:45, Andrew Moore wrote: > On May 21, 2018, at 5:32 AM, Ryan Schmidt 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. > > 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).”
Yes, I know that variables can be made read-only through a trace. MacPorts base has a feature built around traces called option_proc. So my question is why it wasn't done that way. Clemens, do you remember? https://trac.macports.org/changeset/134511
