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.

All labels observed (1)

Label Occurrences
R6RS syntax-case macros canonical 1

How this entity was disambiguated

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 ⓘ
definedInStandard R6RS ⓘ
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 ⓘ
linked to: Scheme R5RS
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 ⓘ

How these facts were elicited

Referenced by (1)

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

Chez Scheme → supportsFeature → R6RS syntax-case macros ⓘ