Hi there,
I decided that it would be good to make sure that I am up-to-date with Gambit 4.4 before I posted my web framework here for those who have expressed an interest and I am finding a destructive interaction when using the c-lambda form.
With the code in the sequel and Gambit 4.4.0, if I compile thusly:
$ gsc -:s -link bug.gambit
*** ERROR IN MAP -- invalid syntax ()
but it compiles fine if I omit the -:s option. Now obviously, the example does not require syntax-rules macros, but the full framework certainly does. Is there a known incompatibility here? The text concerning define-syntax hints at such a possibility, but the actual interaction is unclear.
; Null module for: Prelude
(c-declare
"
#include <sys/time.h>
#include <time.h>
")
(c-define-type timeval (struct "timeval"))
(c-define-type timeval* (pointer timeval))
(define
make-timeval
(c-lambda
()
timeval*
"___result_voidstar = ___EXT(___alloc_mem)(sizeof(struct timeval));"))
(define
timeval.tv_sec
(c-lambda
(timeval*)
int32
" ___result = ___arg1->tv_sec;"))
(define
timeval.tv_usec
(c-lambda
(timeval*)
int32
"___result = ___arg1->tv_usec;"))