For each of the “read-modify-write” operators in the next figure,
and for any additional macros
defined by the programmer using define-modify-macro
,
an exception is made to the normal rule of left-to-right evaluation of arguments.
Evaluation of argument forms occurs in left-to-right order,
with the exception that for the place argument, the actual
read of the “old value” from that place happens
after all of the argument form evaluations,
and just before a “new value” is computed and written back into the place.
Specifically, each of these operators can be viewed as involving a form with the following general syntax:
(operator {preceding-form}* place {following-form}*)
The evaluation of each such form proceeds like this: