Examples of the contents of the constituents of setf expansions follow.
For a variable x:
();list of temporary variables();list of value forms(g0001);list of store variables(setq x g0001);storing form x ;accessing form Figure 5–3: Sample Setf Expansion of a Variable
For (car exp):
(g0002);list of temporary variables(exp);list of value forms(g0003);list of store variables(progn (rplaca g0002 g0003) g0003);storing form(car g0002);accessing form Figure 5–4: Sample Setf Expansion of a CAR Form
For (subseq seq s e):
(g0004 g0005 g0006);list of temporary variables(seq s e);list of value forms(g0007);list of store variables(progn (replace g0004 g0007 :start1 g0005 :end1 g0006) g0007);storing form(subseq g0004 g0005 g0006); accessing form Figure 5–5: Sample Setf Expansion of a SUBSEQ Form
In some cases, if a subform of a place is itself
a place, it is necessary to expand the subform
in order to compute some of the values in the expansion of the outer
place. For (ldb bs (car exp)):
(g0001 g0002);list of temporary variables(bs exp);list of value forms(g0003);list of store variables(progn (rplaca g0002 (dpb g0003 g0001 (car g0002))) g0003);storing form(ldb g0001 (car g0002)); accessing form Figure 5–6: Sample Setf Expansion of a LDB Form