(import foreign) (define-external (foo) void (print "hah!")) (foreign-declare "typedef void (*cb)(); cb f;") (foreign-declare "void setCB(void (*cb)()){ f=cb; }") (foreign-declare "void callCB(){ f(); }") (define set-cb (foreign-lambda void "setCB" (function void ()))) (define call-cb (foreign-lambda void "callCB")) ;; Does not work ; (define call-cb (foreign-safe-lambda void "callCB")) ; works (set-cb (location foo)) (print "Set cb") (call-cb) (print "done.")