为了论证,我们可以说当我们在Lisp中创建列表时,它是一个状态的变化吗?现在可以使用cons,list或任何其他列表创建函数。
考虑一个过滤函数,它从列表中过滤奇数并仅保留偶数。现在它通过创建新列表和使用递归来实现。我们可以说程序中的状态有变化吗?假设我们已经了解翻译的观点。
考虑列表是对象,当旧对象被删除以支持新对象时,它是状态的改变吗?
从技术角度来看,这也是多么有效。我的意思是从Lisp解释器的角度来看。
答案 0 :(得分:2)
这一切都取决于你如何定义“状态的变化”,或者更好的是,我们正在讨论的状态。国家是事物的属性,所以要回答你的问题,我们必须问“究竟是什么状态?”
让我们看看几个可能的候选人:
在你的过滤示例中,我们有一个列表A.过滤器构造一个只包含偶数的新列表B.
A的状态绝对不会改变。这就是构建新列表的重点。
B的状态肯定会改变。在运行过滤器之前,它不存在,现在确实如此。
运行时环境的状态也包含所有变量,当我们添加带有筛选列表的新符号时,其状态肯定会发生变化。
所以,回答你的问题:是的。但请记住,状态是某种东西的属性,并且要正确地回答它,你必须告诉我们你感兴趣的状态。