FP中的状态是个很奇怪的东西,好像有,但又好像没有。
请用一个简单的例子来解释。我们制作了一个简单的按钮计算器。在过程编程中,按数字键会更改变量x,然后是算术运算符的变量,然后是变量y。在按下等号按钮之前,我们可以随时添加一元减号、百分号来更改操作。所有这些都存储在一个状态中(在这种情况下,在变量中)。单击等号按钮会调用一个可以使用纯函数的有状态过程,但它必须将状态传递给它们。计算出的答案作为新的x转移到状态(已分配)可以继续计算。在 OOP 中也发生了大致相同的事情,只不过不是使用过程,而是使用与其状态一起工作的对象方法。程序可能不同,但本质是这样的——一个过程或方法处理某种状态。
问题:如何在 FP 中编写这样一个与之前的用户输入一起逐步工作的计算器?它会存储程序的一些中间状态吗?理想情况下,一些命令式语言的函数式示例会很好,但如果可能的话,不要使用变量。例如在 js 或 python 中。但是函数式语言中的例子有解释也很讨喜。