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.

Source for wiki SyntaxDefinitions version 1

author

cowan

comment


    

ipnr

127.11.51.1

name

SyntaxDefinitions

readonly

0

text

These tests show the type of syntax definitions the Schemes in the suite understand.

== Define-macro ==

`define-macro` is a low-level bare macro definition, analogous to Common Lisp `defmacro`.  I tested `(define-macro x (lambda (y) y))` followed by `(x (+ 3 4))`, expecting it to return 7 on Schemes that support `define-macro` and an error otherwise.  `define-macro` is not part of any Scheme standard.

Supported: Gambit, Bigloo, Guile, Kawa, SISC, Ypsilon, NexJ, JScheme, !SigScheme, Scheme 9, STklos, RScheme, Rep, Elk, Picrin

Not supported: Racket, Gauche, MIT, Chicken, Scheme48/scsh, SCM, Chez, Vicare, Larceny, Mosh, !IronScheme, KSi, Shoe, !TinyScheme, BDC, XLisp, Schemik, UMB, Llava, SXM, !FemtoLisp, Inlab, Oaklisp, Sagittarius, Foment, Owl Lisp, Chibi

S7 and Dfsch accept `define`-style syntax `(define-macro (x y) y)` only.  The Sizzle documentation claims to do the same, but it didn't work for me.

== Syntax-rules ==

`Syntax-rules` is a syntax transformer used with `define-syntax` and its relatives.  It was described but not standardized in R4RS; with minor extensions, it is part of the R5RS, R6RS, and R7RS-small standards.  I tested `(define-syntax x (syntax-rules () ((x y) y)))`, which is essentially equivalent to the `define-macro` macro used above, but with hygiene.

Supported: Racket, Gauche, MIT, Gambit (with the `-:s` switch), Chicken, Bigloo, Scheme48/scsh, Guile, Kawa, SISC, SCM (with the `-r5 -m` switches), Chez, Vicare, Larceny, Ypsilon, Mosh, !IronScheme, STklos, Scheme 9, SXM, Sagittarius, Foment, Picrin, Owl Lisp, Chibi

Not supported: NexJ, JScheme, KSi, !SigScheme, Shoe, !TinyScheme, RScheme, S7, BDC, XLisp, Rep, Schemik, UMB, Elk, Llava, Sizzle, !FemtoLisp, Dfsch, Inlab, Oaklisp

== Syntax-case ==

== Syntactic closures ==

== Explicit renaming ==

== Implicit renaming ==

time

2015-05-31 05:36:40

version

1