LISP 中 破坏性 和 非破坏性 构造的正确定义是什么(或一般情况下)。我试图寻找实际含义,但我只发现了这些术语的很多用法,而没有真正解释它们。
据我了解,破坏性的函数是的意思,是一个函数,它改变了构造(或变量)的含义-因此,当我将列表作为参数传递给函数时,它对其进行了更改,这称为a 破坏性的 操作,因为它改变了初始列表并返回一个全新的列表。这是对的还是有些异常(exception)?
那么例如设置一个破坏性函数(因为它改变了 x 的值)?我想不是,但我不知道如何,我将如何证明这一点。(set 'x 1)
抱歉,可能是一个非常基本的问题。...谢谢您的回答!
最佳答案
我不会过多地解释“破坏性”这个词。
在列表处理中,破坏性操作是一种潜在地改变一个或多个输入列表作为可见副作用的操作。
现在,您可以扩展对数组,结构,CLOS对象等的操作的含义。您还可以将变量分配称为“破坏性”,依此类推。
在 Common Lisp 中,讨论对序列(通常是列表、字符串和向量)和多维数组的破坏性操作是有意义的。