Mutates a global variable for the duration of a dynamic scope.
The macro emits a
global= call to change the value of each name bound
by the pattern
pat, and emits
to restore their original values at the end of the current lexical scope.
Any number of arguments are valid.
(with-global a b c d) is equivalent to:
(with-global a b) (with-global c d)