[gambit-list] Passing lambdas as callbacks to C functions
Phil Dawes
pdawes at users.sf.net
Fri Feb 2 17:10:45 EST 2007
Hi Marc, Hi Gambit List,
I ran into problems using lambda expressions as callbacks when wrapping
libcsv and I've boiled it down to this testcase. Can anybody tell me why
this crashes?:
-------
(c-define (call-lambda l) (scheme-object) void "call_lambda" ""
(l))
(define looper
(c-lambda (scheme-object) void
#<<c-lambda-end
while(1){
call_lambda(___ARG1);
}
c-lambda-end
))
(define (main)
(looper (lambda () (write "foo"))))
--------
looper is a c function which takes a scheme lambda and repeated invokes
it using the 'call_lambda' bridging function.
When I gsc compile it and run '(main)' after a bunch of looping and
printing it crashes with:
ERROR IN looper -- Operator is not a PROCEDURE
('#<return #2>)
Any ideas? (or am I being stupid?!)
Many thanks,
Phil
More information about the Gambit-list
mailing list