lisp语言如何实现delete函数?
(defun MYDELETE (I L TEMPT )
(cond ((null L) nil)
((eq (car L) I) (rplacd TEMPT (cdr L)))
(t (MYDELETE I (cdr L) L))))
(defun MYREMOVE (I L)
(cond ((eq (car L) I) (cdr L))
(t (MYDELETE I (cdr L) L) L)))
以上是我写的函数,但是有两个问题:
假设L=(a b (c d) e), 1) 当 I=a, (MYREMOVE I L) 并未破坏性的(永久地)删除从L中删除a. 2) 当 I = (c d), (MYREMOVE I L) 仍然返回 (a b (c d) e).。
求教该如何解决