R6RS syntax-case macros

E571519

R6RS syntax-case macros are a powerful, hygienic macro system for Scheme that allows pattern-based source code transformation with full access to the language for expressing complex compile-time logic.

Try in SPARQL Jump to: Statements Referenced by

Statements (49)

Predicate Object
instanceOf Scheme macro system
hygienic macro system
macro system
allows controlled breaking of hygiene when needed
basedOn syntax-case system by R. Kent Dybvig
category metaprogramming facility
contrastsWith R5RS syntax-rules macros
definedIn Revised^6 Report on the Algorithmic Language Scheme NERFINISHED
definedInStandard R6RS NERFINISHED
designedFor maintaining referential transparency of macros
writing complex macros
enables abstraction over binding constructs
compile-time optimization transformations
definition of high-level language constructs
definition of new control structures
definition of new module-like abstractions
embedding of domain-specific languages in Scheme
ensures macro hygiene by default
hasCoreForm identifier-syntax
syntax
syntax-case
syntax-object constructors and accessors
syntax-rules (R6RS variant)
syntax-violation
with-syntax
moreExpressiveThan R5RS syntax-rules macros NERFINISHED
programmingLanguage Scheme
provides access to lexical context of syntax objects
explicit control over macro hygiene
pattern language for destructuring syntax
support for phased libraries and macro expansion phases
template language for constructing syntax
scope compile-time
standardizedInYear 2007
supports arbitrary Scheme code at macro expansion time
compile-time computation
context-sensitive macros
error reporting with source locations
hygienic macro expansion
identifier renaming to avoid capture
lexical scoping preservation
macro-generating macros
macro-introduced bindings
pattern-based source transformation
syntax pattern matching
template-based code generation
uses guards (fenders) for additional matching conditions
pattern variables in syntax-case clauses
syntax objects to represent code with lexical context

Referenced by (1)

Full triples — surface form annotated when it differs from this entity's canonical label.

Chez Scheme supportsFeature R6RS syntax-case macros