lisp语言如何实现delete函数?

baidu_34106947 2016-04-12 09:57:16
(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).。

求教该如何解决
...全文
67 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,423

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧