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:
decf pop pushnew incf push remf
Figure 5-9. Read-Modify-Write Macros