Voglio ottenere l'effetto di una variabile statica usando defuninside of letcon associazione lessicale per creare una chiusura. Tuttavia, durante la compilazione di byte del file, viene visualizzato un avviso. Sto facendo qualcosa di sbagliato o, in caso contrario, c'è un modo per sopprimere questo avviso?
Ho creato 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))
Il codice funziona come previsto: la funzione increase-countstampa "Count is: n" dove n aumenta ogni volta che viene chiamato. Tuttavia, durante la compilazione di byte di questo file, ricevo il seguente avviso:
In end of data:
mcve.el:11:1:Warning: the function ‘increase-count’ is not known to be
defined.
Mi sembra che increase-countdebba sempre essere definito prima che venga chiamato alla fine del let-block. Non è così?
defunnon fa quello che pensi che faccia, crea sempre una definizione di alto livello. Dopotutto Elisp non è Scheme ...