|
|
1
21
我认为你只是以一种不寻常的方式使用了“国家”这个词。如果您考虑添加1和1以获得2作为有状态的,那么您可以说函数式编程包含状态。但是,当大多数人说“状态”时,他们的意思是存储和更改值,这样调用一个函数可能会留下与调用函数之前不同的东西,并且使用相同的输入再次调用函数可能不会产生相同的结果。 本质上,无状态计算是这样的:
状态计算是这样的:
|
|
|
2
8
与其逃避国家,不如这样想: 它避免了 改变 状态。“可变”这个词。 用C语言或Java对象来思考。通常,您会对对象调用一个方法,并且您可能期望它在该方法调用之后修改其内部状态。 使用函数编程,您仍然有数据,但它只是通过每个函数传递,创建与输入和操作相对应的输出。 至少理论上是这样。实际上,并不是你做的每件事 作品 在功能上,你经常会隐藏状态以使事情正常工作。
编辑:
|
|
3
2
维基百科的定义是正确的。一开始可能会让人困惑,但是如果你开始使用say haskell,你会注意到你周围没有任何包含值的变量。 状态仍然可以用 state monads . |
|
|
4
1
维基百科的定义是正确的。函数式编程避免了状态。函数编程意味着你将一个函数应用到一个给定的输入并得到一个结果。但是,可以保证不会以任何方式修改您的输入。这并不意味着你不能有一个状态。单子就是最好的例子。 |