When complex assignments are performed, the R interpreter creates, then
removes a special variable *tmp*. However, when byte compiling is enabled,
it seems that a different mechanism for making compound assignments is used.

Would it be possible to eliminate *tmp* from interpreted R code as well? It
might be useful for a function to lock its own environment, and the
appearance and disappearance of *tmp* generally precludes that.

(For example, a function might lock its own environment to guard against
lexical-scope-breaking ambiguities such as

x <- 1
f <- function() {
   if (runif() < 0.5) {
    x <- x+1
  }
  x
}

where it is not clear where the returned x comes from inside or outside f.)

	[[alternative HTML version deleted]]

