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))