No sé si lo llamaría la formulación canónica, pero se unen a una función local me ha informado por el manual de GNU utilizar 'flet':dejó y flet en Emacs Lisp
(defun adder-with-flet (x)
(flet ((f (x) (+ x 3)))
(f x))
)
Sin embargo , por accidente intenté (después de haber jugado en Scheme por un tiempo) la siguiente expresión, donde ato una expresión lambda a una variable usando 'let', y también funciona si paso la función a mapcar *:
(defun adder-with-let (x)
(let ((f (lambda (x) (+ x 3))))
(car (mapcar* f (list x))))
)
Y ambas funciones funcionan:
(adder-with-flet 3) ==> 6
(adder-with-let 3) ==> 6
¿Por qué funciona el segundo? No puedo encontrar ninguna documentación donde 'let' se pueda usar para vincular funciones a símbolos.
Para cualquiera que trate de esto, tenga en cuenta que 'flet' podría no estar disponible en la versión de emacs que está utilizando, en cuyo caso probar un' (require 'cl) 'de antemano como se menciona a continuación (' flet' es una cosita de CommonLisp). – Robert
¿Qué manual de GNU recomienda el uso de 'flet' aquí? – Stefan
De Emacs 25.1.1 Describir Función: flet Esta macro está obsoleta desde 24.3; use cualquiera 'cl-flet 'o' cl-letf' – AAAfarmclub