FFI callback 実装中

int returnCallback(int (*func) (void))
{
  return func();
}
(let ()
    (define libffitest (open-shared-library "./libffitest.so.1.0"))
    (define returnCallback (c-function libffitest int returnCallback void*))
    (let ([callback (make-c-callback 'int '(void) (lambda () 10))])
      (test-true (pointer? callback))
      (test-eq 10 (returnCallback callback))))


以上のような簡単な例が動いた。
今回の FFI callback のような「ぱっとは理解できないややこしい仕組み」を実装する場合は、一番簡単な具体例から実装し、抽象化していくと良い。プログラマは具体→抽象が得意なのだから。
と、Kent BeckTest Driven Developmentで書いてたよ。