(with-dyn-lib "./query.so" (deffi query "query" void (closure))) (with-dyn-lib nil (deffi memcpy "memcpy" cptr (cptr str size-t))) (deffi-cb query-cb int (cptr (ptr (array 1 size-t)))) (query (query-cb (lambda (buf sizeptr) ; int lambda(void *buf, siz (symacrolet ((size [sizeptr 0])) ; { #define size sizeptr[0] (let* ((s "Here am I") ; char *s = "Here am I"; (l (length s))) ; size_t l = strlen(s); (cond ; if (length > size) ((> l size) 0) ; { return 0; } else (t (memcpy buf s l) ; { memcpy(buf, s, l); (set size l)))))))) ; return size = l; } }