(rnrs syntax-case (6)) library provides access to the
syntax-case system for writing hygienic macros. With one
exception, all of the forms and procedures exported by this library
are “re-exports” of Guile’s native support for
See Syntax Case, for documentation, examples, and rationale.
Creates a new variable transformer out of proc, a procedure that
takes a syntax object as input and returns a syntax object. If an
identifier to which the result of this procedure is bound appears on the
left-hand side of a
set! expression, proc will be called
with a syntax object representing the entire
and its return value will replace that
syntax-case pattern matching form.
These forms allow references to be made in the body of a syntax-case output expression subform to datum and non-datum values. They are identical to the forms provided by Guile’s core library; See Syntax Case, for documentation.
These predicate procedures operate on syntax objects representing
#t if obj
represents an identifier,
#t if and only if a binding for
id1 would capture a reference to id2 in the transformer’s
output, or vice-versa.
and only id1 and id2 would refer to the same binding in the
output of the transformer, independent of any bindings introduced by the
Returns a list, of the same length as l, which must be a list or a syntax object representing a list, of globally unique symbols.
These procedures convert wrapped syntax objects to and from Scheme datum
values. The syntax object returned by
contextual information with the syntax object template-id.
Constructs a new compound condition that includes the following simple conditions:
&whocondition with the whom as its field
&messagecondition with the specified message
&syntaxcondition with the specified form and optional subform fields