J'essaie d'utiliser une fonction locale à l'aide d'étiquettes pour permettre à ma fonction de se répéter. Voici le code:La fonction des étiquettes Lisp a été supprimée avant d'être utilisée
(defun my-replace (e1 e2 L)
"Perform a deep replace e1 with e2 in L."
(labels ((my-replace-rec (e1 e2 L)
"Used for recursion"
(cond ((endp L) nil)
((equal (car L) e1) (cons e2 (cdr L)))
((listp (car L)) (my-replace-rec e1 e2 (car L)))
(t (my-replace-rec e1 e2 (cdr L)))))))
(my-replace-rec e1 e2 L))
Lorsque je bave d'évaluer la fonction et essayer de l'exécuter:
; Note: Deleting unused function
; (LABELS MY-REPLACE-REC)
; ;
; Warning: This function is undefined:
; MY-REPLACE-REC
J'ai essayé de tenir dans la mesure du message d'erreur que je pouvais, mais je Je travaille avec Emacs (que je suis encore très nouveau à) et en essayant de coller à partir d'un petit tampon.
Pourquoi cela se produit-il? Il est défini et utilisé, mais il semble qu'il continue à être supprimé (soi-disant parce qu'il n'est pas utilisé) avant d'être utilisé.