diff options
Diffstat (limited to 'txr.1')
-rw-r--r-- | txr.1 | 28 |
1 files changed, 25 insertions, 3 deletions
@@ -24681,9 +24681,31 @@ has the same syntax as It specifies a macro transformation for a compound form which has the .meta name symbol in its leftmost position. -This macro expansion is applied when such a form is used as a place. -It is applied after all other expansions, and no other macro-expansions -are applied afterward. + +Forms which are used as syntactic places are subject to a modified +macro-expansion algorithm. If a place macro applies to a place, then it is +expanded, otherwise it is taken as-is. Then the place is expanded as a ordinary +macro (possibly a symbol macro). Then the process is repeated from the +beginning, as necessary. Thus, the output of the ordinary macro expansion may +potentially be, again, a place macro. Place macros can expand to other place +macros or ordinary macros and vice versa. + +Place macro expansion doesn't use an environment; place macros are in a single +global namespace, special to place macros. There are no lexically scoped place +macros. Such an effect can be achieved by having a place macro expand to +an a form which is the target of a global or local macro, as necessary. + +The +.code define-place-macro +form does not cause +.meta name +to become +.code fboundp +or +.codn boundp . + +There can exist both an ordinary macro and a place macro of the same name; +moreover, this is potentially useful. .TP* "Example:" |