let-syntax -- r7rs Definition syntax;
let-syntax (from vonuvoli);Syntax keywords:
keyword: identifier;syntaxes: pattern with variants:
();((keyword @syntax-transformer) |...|);expression: expression;Syntax variants:
(_ syntaxes)(_ syntaxes expression |...|)scheme:base -- (scheme base);scheme -- (scheme);(let-syntax <bindings> <body>)Syntax:
<Bindings>has the form((<keyword> <transformer-spec>) ...)Each
<keyword>is an identifier, each<transformer-spec>is an instance ofsyntax-rules, and<body>is a sequence of one or more definitions followed by one or more expressions. It is an error for a<keyword>to appear more than once in the list of keywords being bound.Semantics: The
<body>is expanded in the syntactic environment obtained by extending the syntactic environment of thelet-syntaxexpression with macros whose keywords are the<keyword>s, bound to the specified transformers. Each binding of a<keyword>has<body>as its region.(let-syntax ((given-that (syntax-rules () ((given-that test stmt1 stmt2 ...) (if test (begin stmt1 stmt2 ...)))))) (let ((if #t)) (given-that if (set! if 'now)) if)) ===> now (let ((x 'outer)) (let-syntax ((m (syntax-rules () ((m) x)))) (let ((x 'inner)) (m)))) ===> outer
The text herein was sourced and adapted as described in the "R7RS attribution of various text snippets" appendix.