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


15.3.4.5 Primitive syntactic bindings: non–core macros

A syntactic binding representing a non–core syntax with transformer function implemented by the expander has descriptor with format:

(macro . ?name)

where ?name is a symbol representing the public name of the syntax. The non–core syntax transformer functions are implemented by the expander in the module exporting the function non-core-macro-transformer, which is used to map non–core syntax names to transformer functions.

The implementation of non–core syntaxes can be decomposed into uses of other syntaxes. Some of these syntaxes are:

define-struct define-record-type define-condition-type
define-enumeration
or and xor
cond case
let* let-values let*-values syntax-rules
quasiquote quasisyntax with-syntax identifier-syntax
let*-syntax
define-syntax-rule define-auxiliary-syntaxes define-syntax*
do when unless while until for returnable
case-define define* case-define* lambda* case-lambda*
define-values receive receive-and-return begin0
include
assert try with-unwind-protection guard