Je veux obtenir l'effet d'une variable statique en utilisant defuninside of letavec une liaison lexicale pour créer une fermeture. Cependant, lors de la compilation d'octets du fichier, je reçois un avertissement. Suis-je en train de faire quelque chose de mal, ou sinon, existe-t-il un moyen de supprimer cet avertissement?
J'ai créé 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))
Le code fonctionne comme prévu: la fonction increase-countaffiche "Count is: n" où n augmente à chaque appel. Cependant, lors de la compilation d'octets de ce fichier, j'obtiens l'avertissement suivant:
In end of data:
mcve.el:11:1:Warning: the function ‘increase-count’ is not known to be
defined.
Il me semble que cela increase-countdevrait toujours être défini avant d'être appelé à la fin du let-block. Ce n'est pas le cas?
defunne fait pas ce que vous pensez qu'il fait, il crée toujours une définition de haut niveau. Elisp n'est après tout pas Scheme ...