manpagez: man pages & more
info guile
Home | html | info | man
[ << ] [ < ] [ 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 entire set! expression, and its return value will replace that set! 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

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on April 20, 2013 using texi2html 5.0.

© manpagez.com 2000-2024
Individual documents may contain additional copyright information.