删除common lisp中列表的所有元素的函数?

删除common lisp中列表的所有元素的函数?,lisp,common-lisp,Lisp,Common Lisp,如何创建删除给定列表中所有元素的函数 是否有一个函数已经完成了它,或者我应该创建它? 我想使用递归删除第一个元素,直到列表为空 我不仅需要被显示,还需要被删除,例如,当我有一个名为list1的列表被定义为a 2 b 3 c 4时,我需要一个函数来删除它,以便以后可以用其他元素填充它。这听起来像是一个困惑:Lisp不像c,您必须手动管理存储。如果不是,这里有一些可能性 如果您想“删除”所有元素,那么这样做没有任何意义:只要停止引用列表,它们就消失了。如果列表绑定到某个变量,那么,如果没有其他对它的

如何创建删除给定列表中所有元素的函数

是否有一个函数已经完成了它,或者我应该创建它? 我想使用递归删除第一个元素,直到列表为空


我不仅需要被显示,还需要被删除,例如,当我有一个名为list1的列表被定义为a 2 b 3 c 4时,我需要一个函数来删除它,以便以后可以用其他元素填充它。

这听起来像是一个困惑:Lisp不像c,您必须手动管理存储。如果不是,这里有一些可能性

如果您想“删除”所有元素,那么这样做没有任何意义:只要停止引用列表,它们就消失了。如果列表绑定到某个变量,那么,如果没有其他对它的引用,那么当变量超出范围时,它就消失了。或者,例如,只需将setf var绑定到list nil,但如果变量无论如何都要超出范围,就不要这样做

如果要删除某些元素,则可能需要以下函数之一:

remove elt sequence将以非破坏性方式从序列中删除elt:它将返回已从中删除elt的新序列。 删除elt序列类似于删除,只是它具有破坏性:它几乎总是破坏性地修改序列。
请注意,在列表的情况下,有一种情况下delete不是destroctive:如果elt是列表的第一个元素,如果您考虑列表是如何工作的,那么原因应该是显而易见的。因此,您通常希望使用setf myvar delete'foo myvar来处理这种情况。

这听起来像是一种混淆:Lisp不像C,您必须手动管理存储。如果不是,这里有一些可能性

如果您想“删除”所有元素,那么这样做没有任何意义:只要停止引用列表,它们就消失了。如果列表绑定到某个变量,那么,如果没有其他对它的引用,那么当变量超出范围时,它就消失了。或者,例如,只需将setf var绑定到list nil,但如果变量无论如何都要超出范围,就不要这样做

如果要删除某些元素,则可能需要以下函数之一:

remove elt sequence将以非破坏性方式从序列中删除elt:它将返回已从中删除elt的新序列。 删除elt序列类似于删除,只是它具有破坏性:它几乎总是破坏性地修改序列。
请注意,在列表的情况下,有一种情况下delete不是destroctive:如果elt是列表的第一个元素,如果您考虑列表是如何工作的,那么原因应该是显而易见的。因此,您通常希望使用setf myvar delete'foo myvar来处理这种情况。

是的,您是对的,这不是使用clisp的最佳方法,这就是为什么我找到了另一种方法来完成我需要的工作,而不必通过删除和添加内容来处理列表之类的结构。谢谢!是的,你是对的,这不是使用clisp的最佳方式,这就是为什么我找到了另一种方法来做我需要的事情,而不必使用列表之类的结构,通过删除和添加内容。谢谢!