Arc Cross Reference

setter

[variable] setter

[procedure] setforms place-form

[procedure] metafn place-form

[procedure] expand-metafn-call expanded-func args

[procedure] expand= place-form val

[procedure] expand=list terms

Generalized setter support (sort of scheme:SRFI-17). I guess these belong to "under-the-hood" and most casual users don't need to care.

A global table setter keeps association of name (which appears in the car position of the place form) and an expansion procedure defined by defset.

setforms takes the form represents place and returns the triplet (as the one returned by expansion procedure given to defset). The reason you need this is that you want to analyze the case that the car of place-form isn't a symbol.

metafn, expand-metafn-call, expand= and expand=list are all helper functions of generalized set expansion.

See defset, =, push, pop, swap, and rotate for the use of generalized set.

(Comment: It's a bit surprising to me that PG took CL-ish approach over SRFI-17 approach here, since he appears to emphasize symplicity over performance unless the performance is really an issue. SRFI-17 is surprisingly simple to implement and performs reasonably well; the penalty drawback is that if you want to inline the setter functions you have to tweak the engine. -- shiro)