-1
所以我昨天开始学习Lisp并开始做一些问题。Lisp返回值
我很难做的事情是插入/删除列表中的原子,同时保持列表相同前:(delete 'b '(g a (b) l))
将给我(g a() l)
。
另外我遇到麻烦的是这个问题。 我想检查列表中是否有原子存在的位置。
我追踪到它,它表示它在一个点返回T
,但随后被覆盖nil
。
你们能帮忙吗?
我使用
在第四届函数调用返回T
但随后变得nil
。
(defun appear-anywhere (a l)
(cond
((null l) nil)
((atom (car l))
(cond
((equal (car l) a) T)
(T (appear-anywhere a (cdr l)))))
(T (appear-anywhere a (car l))(appear-anywhere a (cdr l)))))
请注意,Common Lisp中有一个'delete'函数。它没有上述行为。如果你定义了你自己的函数delete,那么这个行为就不再被Common Lisp标准所定义,并且基本上取决于Lisp在这种情况下的行为。当然,你可以制作自己的符号包(一种名称空间),它有一个'delete'符号,与'cl:delete'无关。 – Kaz