具有函数式编程的企业模式

Enterprise patterns with functional programming

关于企业架构模式(a la Fowler 的)(a la)是否有任何好的(集中式)信息来源,也许有示例和用例以及大量实用信息?例如,我在一些 SO 帖子和其他站点中看到了 GoF 的许多设计模式,以及与之相关的实用信息。我正在从面向企业应用程序的更具功能性的范例中寻求类似的资源。

谢谢。

I'm asking for an analogous resource from a more functional paradigm oriented to enterprise applications.

没有我知道的资源。现代 FP 的大规模企业使用时间通常不到 10 年,因此资源往往采用互联网形式。此外,很多人回避 GoF,因为它与 FP 基本无关。

SO 仍然是您最好的选择(这里有一个例子:)。毫无疑问,FP 体系结构书籍是有市场的。


社论

根据我的经验,几乎所有设计都属于 'compiler' 或 'interpreter' 模式,使用数据模型和数据函数。也就是说,问题域被表示为 代数结构 (对象作为 ADTs,其上有函数),软件架构是关于从一个代数到另一个代数的映射。这就是 "category theory" 设计模式 (!)

我们的代数数据类型是捕获结构的最佳方式。函数是转换这些结构或将它们映射到新类型结构的最佳方式。并且有很多关于编写编译器和解释器的研究可以使这些事情变得容易。您可以通过编写编译器(或解释器)来实现大多数系统。所以学习写编译器。

当您开始寻找这些 "categoric" 软件问题时,作为解释器或编译器,有多少事情会失败,这真是令人惊讶。像 MVC 这样的东西作为解释器会失败。许多商业软件(数据处理)变成了解析器+分析+漂亮的打印机——即编译器。也许很明显,架构(即如何粘合组件)实际上是关于代数和类别的。

显然这是关于高级架构的。较低级别的事情,例如如何最好地实现日志记录系统,或者如何最好地连接昂贵的组件,如何传递环境,replay/rollback 确实具有可以重用的特定抽象是一个不同的问题。通常 monoids/monads/applicatives 或作为库捕获的其他计算概念。

同样,我们转到代数视图以找到最能捕捉问题域的结构。