[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
7.6.2.22 rnrs syntax-case
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 section Support for the syntax-case
System, for documentation, examples, and rationale.
- Scheme Procedure: make-variable-transformer proc
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.
- Scheme Syntax: syntax-case expression (literal ...) clause ...
The
syntax-case
pattern matching form.
- Scheme Syntax: syntax template
- Scheme Syntax: quasisyntax template
- Scheme Syntax: unsyntax template
- Scheme Syntax: unsyntax-splicing template
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 section Support for the
syntax-case
System, for documentation.
- Scheme Procedure: identifier? obj
- Scheme Procedure: bound-identifier=? id1 id2
- Scheme Procedure: free-identifier=? id1 id2
These predicate procedures operate on syntax objects representing Scheme identifiers.
identifier?
returns#t
if obj represents an identifier,#f
otherwise.bound-identifier=?
returns#t
if and only if a binding for id1 would capture a reference to id2 in the transformer’s output, or vice-versa.free-identifier=?
returns#t
if 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.
- Scheme Procedure: generate-temporaries l
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.
- Scheme Procedure: syntax->datum syntax-object
- Scheme Procedure: datum->syntax template-id datum
These procedures convert wrapped syntax objects to and from Scheme datum values. The syntax object returned by
datum->syntax
shares contextual information with the syntax object template-id.
- Scheme Procedure: syntax-violation whom message form
- Scheme Procedure: syntax-violation whom message form subform
Constructs a new compound condition that includes the following simple conditions:
-
If whom is not
#f
, a&who
condition with the whom as its field -
A
&message
condition with the specified message -
A
&syntax
condition with the specified form and optional subform fields
-
If whom is not
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on April 20, 2013 using texi2html 5.0.