DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(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