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.

On Jan 16, 2012 1:35 PM, "Sascha Ziemann" <ceving@gmail.com> wrote:
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