Hi,
Sorry for asking yet another NOOB question, but I’m having trouble getting “let-syntax” to work using the latest version of gambit.
I’m trying to use the let-syntax example code copied verbatim from page 14 of the R5RS standard:
~ ~ ~ ~ (let-syntax ((when (syntax-rules () ((when test stmt1 stmt2 ...) (if test (begin stmt1 stmt2 ...)))))) (let ((if #t)) (when if (set! if ’now)) if )) ~ ~ ~ ~
This is what happens when I cut and paste that code into “gsi”:
~ ~ ~ ~ % gsi -v v4.9.3 20220102232246 x86_64-apple-darwin21.3.0 "./configure 'CC=gcc-mp-12' '--prefix=/Users/me/gambit' '--enable-single-host' '--enable-march=native' '--enable-dynamic-clib'" % % gsi -:s Gambit v4.9.3
(let-syntax ((when (syntax-rules ()
((when test stmt1 stmt2 ...) (if test (begin stmt1 stmt2 ...)))))) (let ((if #t)) (when if (set! if ’now)) if )) *** ERROR IN (stdin)@2.14 -- Ill-formed special form (when (syntax-rules () ((when test stmt1 stmt2 ...) (if test (begin stmt1 stmt2 ...)))))
,q
~ ~ ~ ~
I have tried specifying various command-line options to gsi, for example:
gsi ~~lib/syntax-case - gsi gsi -:s gsi -:s,r5rs gsi -:s,r7rs
All of these produce essentially identical outputs.
Note that my version of gsi is the latest version. I downloaded the file “gambit-v4_9_4.tgz” from the gambit website, but when it is compiled the executable reports that it is version 4.9.3. This seems to be because the file “gambit-4.9.4/include/stamp-release.h” contains the text “#define ___STAMP_RELEASE_VERSION "v4.9.3"”, but I assure you that I’ve downloaded the 4.9.4 source file.
Anyway, and help would be greatly appreciated.
(Incidentally, the reason that I’m trying to get let-syntax working is because I’d like to use Alex Shinn’s portable hygienic pattern matcher “match.scm” with Gambit, but it uses let-syntax, which as you can see I haven’t got to work. Does anyone know whether there is a version of match.scm already ported over to Gambit?)
Thanks, - William