Next: , Previous: , Up: expander lexenv internal   [Index]


15.3.6.2 Internal syntactic bindings: non–variable macros

A syntactic binding representing a keyword binding with non–variable transformer has descriptor with format:

(local-macro . (?transformer . ?expanded-expr))

where: ?transformer is a function implementing the macro transformer; ?expanded-expr is the expression in fully expanded code representing the right–hand side of the syntax definition. ?transformer is the result of compiling and evaluating ?expanded-expr.

For every top level binding of this type, the following symbolic expression is added to the visit code of the library being expanded:

(set! ?loc ?expanded-code)

where ?loc is the storage location gensym of the macro.

These syntactic bindings are established by define-syntax, let-syntax and similar, when their right–hand side evaluates to a function.