The Set function will permanently change the variable value. See the PushSet function for an alternative.
There is an exception to the direct-substitution rule. If any substitution string is of the form ``(...)'', then the parentheses and leading/trailing white space are stripped before substitution, and the entire substituted string is enclosed in parentheses if it is not already. This is for convenience when adding a directory to a search path (see 1.5.5) variable, and the path is enclosed in parentheses. See the !set command description in 16.23 for more information.