![](https://secure.gravatar.com/avatar/5cd0acc03793e7944454dbb533bbfe43.jpg?s=120&d=mm&r=g)
"Luís Oliveira" <loliveira@common-lisp.net> writes:
On 9/25/06, Lars Brinkhoff <lars@nocrew.org> wrote:
Can CFFI defcallbacks be closures, e.g.
(let ((x 42)) (defcallback foo :int ((y :int)) (+ x y)))
Unfortunately, last time I checked, not all Lisps support non top-level DEFCALLBACKs. See: <http://common-lisp.net/project/cffi/manual/html_node/defcallback.html>
...and in even those that do (like SBCL), you should be aware that whereas a call like (some-foreign-function callback) is likely to be decently efficient, each call like (let ((x 0)) (some-foreign-function (alien-lambda () (frob x)))) is likely to be a _lot_ more expensive, as each call needs to generate a new callback. Cheers, -- Nikodemus Schemer: "Buddha is small, clean, and serious." Lispnik: "Buddha is big, has hairy armpits, and laughs."