This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home. For a version of this page that may be more recent, see DefineSyntaxDefines in WG2's repo for R7RS-large.

Define­Syntax­Defines

cowan
2013-05-24 13:06:30
3history
source

I tried out

(define-syntax foo (syntax-rules () ((foo) (define x 32)))) (foo) => ??? x => ???

to see whether I got 32 as the value of x or blew up on an error such as invalid syntax (in the define-syntax) or undefined variable.

Racket, MIT, Gambit, scsh/Scheme48, SISC, Chez, Ikarus/Vicare, Ypsilon, Mosh IronScheme, NexJ, KSi, SigScheme, Shoe, TinyScheme, Dream, RScheme, S7, XLisp, Rep, Schemik, ELK, UMB, VX, Oaklisp, Llava, Sizzle, Spark, Femtolisp, Dfsch, Inlab, Owl Lisp blew up (some of them because they don't support syntax-rules).

Gauche, Chicken, Bigloo, Guile, Kawa, Chibi, SCM, Larceny (in R5RS mode), Scheme 9, STklos, SigScheme, BDC, SXM, VSCM were fine with it and returned 32.