Quiero obtener el efecto de una variable estática usando defundentro de un letenlace léxico para crear un cierre. Sin embargo, al compilar byte el archivo, recibo una advertencia. ¿Estoy haciendo algo mal, o si no, hay alguna forma de suprimir esta advertencia?
He creado un MCVE:
;; -*- lexical-binding: t -*-
(let ((count 0))
(defun increase-count ()
(interactive)
(setq count (1+ count))
(message "Count is: %d" count))
;; The warning happens here.
(increase-count))
El código funciona como se esperaba: la función increase-countimprime "Count is: n" donde n aumenta cada vez que se llama. Sin embargo, al compilar byte este archivo, aparece la siguiente advertencia:
In end of data:
mcve.el:11:1:Warning: the function ‘increase-count’ is not known to be
defined.
Me parece que increase-countsiempre debe definirse antes de que se llame al final del let-block. ¿No es este el caso?
defunno hace lo que crees que hace, siempre crea una definición de nivel superior. Elisp es después de todo no Esquema ...