[gambit-list] syntax-case and procedures with keyword parameters

Marc Feeley feeley at iro.umontreal.ca
Sun Mar 4 11:17:09 EST 2012


On 2012-03-03, at 1:49 PM, Álvaro Castro-Castilla wrote:

> I wonder why Gambit doesn't include a syntax-rules implementation that
> is compatible with DSSSL and cond-expand, it belongs to R5RS.

Gambit uses the psyntax macro expander extracted from Chez Scheme Version 7.3 .  Using psyntax has the advantage that it not only provides syntax-rules, but also syntax-case which is more powerful (allows breaking hygiene).

Unfortunately, psyntax is a large complex piece of software.  When it is compiled, it takes almost as much space as the whole interpreter (including runtime and primitive procedures).  Psyntax basically implements a specific Scheme dialect on top of Gambit.  The Gambit syntactic extensions to Scheme, such as DSSSL optional and named parameters, declarations, low-level macros, keyword objects, etc would have to be *reimplemented* in psyntax, which is quite an undertaking.  The psyntax code is much too hairy for me to understand how the extensions would fit in properly.  Moreover, I am not willing to put time into this, knowing that using the psyntax system permanently in Gambit will bloat the system unreasonably (doubling the size of the interpreter).

By the way, that's why syntax-rules and syntax-case are not available by default in Gambit.  You must use the -:s runtime option for Gambit to conform to R5RS (or load ~~lib/syntax-case.scm explicitly at the REPL).

Marc




More information about the Gambit-list mailing list