相关疑难解决方法(0)

如何在功能上处理来自外部系统的状态?

我最近进入了函数式编程,并且学习了几种以引用透明的方式处理某些副作用的方法:

  • 用于可变状态的 State monad,例如更新变量
  • 用于 I/O的 IO monad,例如从/向控制台读/写
  • FRP用于图形和输入设备事件等交互性

但是现在大多数“真实世界”的应用程序都与外部系统(如 Web 服务、数据库等)交互,这些系统可以由多个用户同时修改,它们有状态、长时间运行的操作等。所以情况并不那么简单如上述类别:向系统询问实体的状态或试图控制它的结果取决于其状态。此外,交互性也是一个要求:有一些用户可以任意点击的 GUI,也许我们还必须自动对来自系统的变化做出反应。

通过最大化纯函数的好处来设计和实现此类应用程序的模式是什么?或者上面的一些方法可以以我没有想到的方式应用于这个问题吗?该语言(例如 Java 或 Scala)不会强制执行 100% 纯度,因此我对由实践经验支持的实用解决方案感兴趣。

functional-programming architectural-patterns referential-transparency

5
推荐指数
1
解决办法
543
查看次数