-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 7-Feb-07, at 7:46 PM, Raffael Cavallaro wrote:
A simple example will show the problem I'm running into - is there any workaround?
rafimac:/scheme raffaelc$ cat test.scm (c-declare #<<c-declare-end double test(double afloat, double anotherfloat) { return (afloat + anotherfloat); } c-declare-end )
(define test (c-lambda (double double) double "test"))rafimac:/scheme raffaelc$ rafimac:/scheme raffaelc$ gsc Gambit Version 4.0 beta 20
(exit) rafimac:/scheme raffaelc$ gsc Gambit Version 4.0 beta 20
(compile-file "/scheme/test.scm") #t (load "/scheme/test") "/scheme/test.o1" (test 2.0 2.0)
(load "~~/syntax-case") "/usr/local/Gambit-C/4.0b20/syntax-case.scm" (compile-file "/scheme/test.scm") *** ERROR IN "/scheme/test.scm"@1.1 -- Argument to 'c-declare' must be a string #f
That's a problem with the syntax-case expander, it has nothing to do with the #<< syntax. Unfortunately the syntax-case expander turns things like (foo "abc") into (foo '"abc") which is incorrect when foo is c-declare, or include, etc. It's probably easy to fix for the implementors of syntax-case (Dybvig et al), but I shudder at the thought of figuring out which of the over 40 usages of 'quote in syntax-case.scm has to be made conditional on the object being quoted (the quote should be dropped for strings, numbers, booleans, and characters). Marc -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (Darwin) iD8DBQFFynd4//V9Zc2T/v4RAhyNAKC8X9KfBpALTJ8zNRD6MU0OPduCJwCeLp9R EMYPepsEsIL8d6jHuRn5on4= =/b5u -----END PGP SIGNATURE-----