Try (include "y.scm").
Rationale: In Gambit, syntax definitions are not visible across compilation-unit boundaries; each .scm file is a single compilation unit. However the INCLUDE form copies the text of the included file verbatim into the current compilation unit -- just like C #include -- so, much like C, you will want to factor out your syntax definitions into a separate "header file" and INCLUDE them where needed.
I have a problem loading a file which defines syntax. It does not work
in Gambit although it works in other Schemes.
This is file x.scm:
(define-syntax x
(syntax-rules ()
((_) (display "x\n"))))
(load "y.scm")
(x)
(y)
And this is y.scm:
(define-syntax y
(syntax-rules ()
((_) (display "y\n"))))
When I run Gambit I get an error:
$ gsi -:s x.scm
x
*** ERROR IN "x.scm"@8.2 -- Unbound variable: y
But this works in Gauche, Bigloo and Chicken:
$ gosh x.scm
x
y
$ bigloo -s -i x.scm
x
y
$ csi -qb x.scm
x
y
Who is right?
_______________________________________________
Gambit-list mailing list
Gambit-list@iro.umontreal.ca
https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list