I'm having some trouble understanding the behavioural differences in this code: BEGIN FILE test-alpha.scm -------------------------------------------- (define-syntax foo (syntax-rules (xyzzy) ((_ xyzzy) "nothing happens"))) BEGIN FILE test-beta.scm --------------------------------------------- (load "test-alpha.scm") (define bar (lambda () (foo hello))) ====================================================================== If I load test-beta.scm twice, I get an error on the second load but not on the first one:
(load "test-beta.scm") "/home/taylor/cvs_public/Programs/Libraries/Scheme/test-beta.scm" (load "test-beta.scm") *** ERROR IN %%chi-macro437, "/opt/gambit/lib/syntax-case.scm"@9135.1 -- invalid syntax (foo hello)
But if I do what seems like it should be the equivalent of loading test-alpha.scm, then loading test-beta.scm I get an error on the first load of test-beta:
(load "test-alpha.scm") "/home/taylor/cvs_public/Programs/Libraries/Scheme/test-alpha.scm" (load "test-beta.scm") *** ERROR IN %%chi-macro437, "/opt/gambit/lib/syntax-case.scm"@9135.1 -- invalid syntax (foo hello)
It seems to me that loading test-beta by itself should be the same as loading test-alpha then test-beta, but it's not quite. Why is this? For what it's worth, my Gambit version string is: v4.4.4 20090611032636 amd64-unknown-openbsd4.5 "./configure --prefix=/opt/gambit --enable-single-host" Thanks, -- Taylor Christopher Venable http://real.metasyntax.net:2357/