Hygienic macros

How are hygienic macro systems implemented?

system syntax-rules syntax-case er sc how where
Chez Y Y syntax-case
Chibi Y Y Y ER over SC lib/init7.scm
Chicken Y N Y ER synrules.scm expand.scm
Gauche Y N ! Y syntax-rules written in C src/macro.c
Guile Y Y N syntax-case module/ice-9/safe-r5rs.scm module/ice-9/psyntax.scm
Kawa Y Y syntax-rules written in Java kawa/lang/Syntax{Pattern,Rule,Rules}.java kawa/standard/syntax_case.java kawa/lang/SyntaxForms.java
LIPS Y N N N syntax-rules written in Javascript lips.js
Loko Y Y syntax-case psyntax
MIT Y N Y Y ER src/runtime/syntax-rules.scm
Peroxide Y N ! Y Y ER over SC src/primitives/syntactic_closure.rs src/scheme-lib/init.scm
Sagittarius Y Y Y syntax-case; ER separate boot/lib/macro.scm
STklos Y N N N define-macro (no lexical scope) lib/mbe.stk
Unsyntax Y Y syntax-case src/unsyntax/expander/syntax-case.scm src/unsyntax/syntax.scm
Ypsilon Y Y N N syntax-rules in Scheme; portable syntax-case heap/boot/macro/expand.scm, stdlib/core/syntax-case.scm

! = at least seems to be planned


Back to Scheme Surveys

Page source (GitHub)