【发布时间】:2017-09-27 20:55:27
【问题描述】:
我正在尝试使用带有标签的本地函数来允许我的函数递归。 这是代码:
(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))
当我让 slime 评估函数并尝试运行它时:
; Note: Deleting unused function
; (LABELS MY-REPLACE-REC)
; ;
; Warning: This function is undefined:
; MY-REPLACE-REC
我试图尽可能多地适应错误消息,但我正在使用 Emacs(我还是个新手)并试图从一个小缓冲区中粘贴出来。
为什么会这样?它被定义和使用,但它似乎在它被使用之前一直被删除(据说是因为它没有被使用)。
【问题讨论】:
标签: function lisp common-lisp