FFI callback のサンプル
libc の qsort を呼び出してみる。こんな感じの API はどうでしょうか?>id:mjt さん
Ubuntu AMD64 で確認しています。
;; Mosh callback example *draft*. (import (mosh) (mosh ffi) (rnrs)) (define array (u8-list->bytevector '(6 5 3 4 1 7 2))) (let* ([libc (open-shared-library "libc.so.6")] [qsort (c-function libc void qsort void* int int callback)] [compare (c-callback int (void* void*) (lambda (x y) (if (> (pointer-ref-c-uint8 x 0) (pointer-ref-c-uint8 y 0)) 1 0)))]) (qsort array (bytevector-length array) 1 compare) (display array) (free-c-callback qsort))