(r5rs.info.gz) Syntax definitions
Info Catalog
(r5rs.info.gz) Definitions
(r5rs.info.gz) Program structure
5.3 Syntax definitions
======================
Syntax definitions are valid only at the top level of a <program>.
They have the following form:
(define-syntax <keyword> <transformer spec>)
<Keyword> is an identifier, and the <transformer spec> should be an
instance of `syntax-rules'. The top-level syntactic environment is
extended by binding the <keyword> to the specified transformer.
There is no `define-syntax' analogue of internal definitions.
Although macros may expand into definitions and syntax definitions in
any context that permits them, it is an error for a definition or syntax
definition to shadow a syntactic keyword whose meaning is needed to
determine whether some form in the group of forms that contains the
shadowing definition is in fact a definition, or, for internal
definitions, is needed to determine the boundary between the group and
the expressions that follow the group. For example, the following are
errors:
(define define 3)
(begin (define begin list))
(let-syntax
((foo (syntax-rules ()
((foo (proc args ...) body ...)
(define proc
(lambda (args ...)
body ...))))))
(let ((x 3))
(foo (plus x y) (+ x y))
(define foo x)
(plus foo x)))
Info Catalog
(r5rs.info.gz) Definitions
(r5rs.info.gz) Program structure
automatically generated byinfo2html