Mi función preciosa:elisp: la captura de variables de función interna
(defun f (x)
(lambda (y) (+ x y)))
Entonces, espero que esto:
(funcall (f 2) 2)
Para volver 4. Pero, por desgracia, tengo esto en su lugar:
Debugger entered--Lisp error: (void-variable x)
Entonces, ¿cómo puedo capturar la variable de la función interna?
A partir de Emacs 24, hay otra solución alternativa para el "error" de alcance dinámico: puede poner ';; - * - enlace léxico: t - * - 'en la parte superior del archivo para habilitar el alcance léxico. Si hace esto, el código anterior se ejecuta como se esperaba. –