The (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 syntax-case;
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 entireset!expression, and its return value will replace thatset!expression.
The
syntax-casepattern 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 Scheme identifiers.
identifier?returns#tif obj represents an identifier,#fotherwise.bound-identifier=?returns#tif and only if a binding for id1 would capture a reference to id2 in the transformer's output, or vice-versa.free-identifier=?returns#tif and only id1 and id2 would refer to the same binding in the output of the transformer, independent of any bindings introduced by the transformer.
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
datum->syntaxshares contextual information with the syntax object template-id.
Constructs a new compound condition that includes the following simple conditions:
- If whom is not
#f, a&whocondition with the whom as its field- A
&messagecondition with the specified message- A
&syntaxcondition with the specified form and optional subform fields