在 Lisp 中创建列表可以称为 'change of state' 吗?
Can creating a list in Lisp be called 'change of state'?
为了论证,我们可以说当我们在 Lisp 中创建列表时,它是状态的改变吗?现在可以使用 cons、list 或任何其他列表创建函数。
考虑一个过滤函数,它从列表中过滤奇数,只保留偶数。现在它通过创建新列表和使用递归来做到这一点。我们可以说程序中有状态变化吗?假设我们已经知道口译员的观点。
考虑到列表是对象,并且当旧对象被丢弃以支持新对象时,这就是状态改变吗?
另外,从技术角度来说,这样说是否有效。我的意思是从 Lisp 解释器的角度来看。
这一切都取决于您如何定义 "change of state",或者更好的是,我们正在谈论其状态的事物。状态是事物的属性,因此要回答您的问题,我们必须问 "the state of what exactly?"
让我们看看几个可能的候选人:
在您的过滤示例中,我们有一个列表 A。过滤器构造一个只有偶数的新列表 B。
A的状态肯定没变。这就是构建新列表的意义所在。
B的状态肯定变了。 运行过滤器之前不存在,现在存在
运行时间环境的状态也包含所有变量,当我们用过滤列表添加新交易品种时,它的状态肯定发生了变化。
所以,回答你的问题:是的。但请记住,状态是某种东西的 属性 并且要真正正确地回答它,您必须告诉我们您对谁的状态感兴趣。
为了论证,我们可以说当我们在 Lisp 中创建列表时,它是状态的改变吗?现在可以使用 cons、list 或任何其他列表创建函数。
考虑一个过滤函数,它从列表中过滤奇数,只保留偶数。现在它通过创建新列表和使用递归来做到这一点。我们可以说程序中有状态变化吗?假设我们已经知道口译员的观点。
考虑到列表是对象,并且当旧对象被丢弃以支持新对象时,这就是状态改变吗?
另外,从技术角度来说,这样说是否有效。我的意思是从 Lisp 解释器的角度来看。
这一切都取决于您如何定义 "change of state",或者更好的是,我们正在谈论其状态的事物。状态是事物的属性,因此要回答您的问题,我们必须问 "the state of what exactly?"
让我们看看几个可能的候选人:
在您的过滤示例中,我们有一个列表 A。过滤器构造一个只有偶数的新列表 B。
A的状态肯定没变。这就是构建新列表的意义所在。
B的状态肯定变了。 运行过滤器之前不存在,现在存在
运行时间环境的状态也包含所有变量,当我们用过滤列表添加新交易品种时,它的状态肯定发生了变化。
所以,回答你的问题:是的。但请记住,状态是某种东西的 属性 并且要真正正确地回答它,您必须告诉我们您对谁的状态感兴趣。