(with-global pat new-val)
  pat: a pattern
  new-val: any type
  returns #n

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 defer and defer-yield forms 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)