(module cbtest () (import scheme) (import chicken.base) (import chicken.string) (import chicken.format) (import chicken.foreign) (define callbacks (list)) (define (register-cb! fn) (set! callbacks (cons fn callbacks))) (define-external (cb_wrapper) void (for-each (lambda (cb) (cb)) callbacks)) (define (testfn argp) (printf "maztest: ~S\n" (car argp))) (define (main) (register-cb! (lambda () (testfn '("hi")))) ((foreign-safe-lambda* void () "cb_wrapper();")) (exit 0)) (main) )