功能应用中的共享状态

时间:2018-02-16 18:42:47

标签: scala web-applications functional-programming

好的,我试图了解如何在没有变量的情况下进行编程。

我管理过一个简单的井字游戏,但它依赖于尾递归状态,据我所知,它只能在单个线程中运行。示例可以在https://codereview.stackexchange.com/questions/187339/scala-tic-tac-toe-no-mutable-state

看到

现在,如果我要将相同的代码转换为webapp甚至是gui程序,我无法看到如何在线程之间共享状态,而无需在顶层使用可变引用。

甚至ScalaFX也为其PrimaryStage使用了一个变量,我怀疑它是提供这样一个顶级参考。

如何在不使用变量的情况下在两个或更多消费者之间使用共享状态?例如,如上所述的tic tac toe或接受文本帖子的网络应用程序,并且有一个端点,说明单个单词的发布次数。

相关: Java: state sharing between threads in functional programming

Functional way to implement a thread safe shared counter

然而,这一切的解决方案似乎都需要一个可变变量,一个是原子整数,另一个是STM。

此类工作是否有标准模式?

看完之后 How can you do anything useful without mutable state?How Functional Programming addresses concurrent increment/decrement operations invoked by different users我很确定这是不可能的。确实需要引用可变状态。

如果是这种情况,如何最小化可变状态?

人们在具有内部状态的Web应用程序中使用什么模式进行scala?

0 个答案:

没有答案