OOAD是OOP的功能编程的等价物是什么?

PhD*_*PhD 7 oop haskell ooad functional-programming

我最近进入函数式编程(FP)的世界,我想知道如何为中等大小的应用程序"思考功能"?特别是FP的分析和设计.

通过OOP,我们受过训练,可以根据对象,属性和关系进行思考.我们使用类和序列图对我们的分析/设计进行建模.但是,在设计FP时,相同的模型似乎不合适.函数式编程的等效建模范例是什么?看起来DFD可能很合适,但我可能错了.

例如:我正在考虑设计一个使用Haskell的棋盘游戏Monopoly的模拟,只是为了学习语言.在进行OOAD时,你会想到board包含items附加属性/方法的类.您player可以在类图中捕获各种其他对象及其关联关系.以及它们在序列图中的相互作用.但是,这些建模范例似乎并不适用于功能程序.那么只是"如何"在功能上建模?

注意:我正在寻找可以解释如何分析和设计功能程序的具体参考/示例,因为我来自面向对象的思维/建模方式.

Sib*_*ibi 18

根据Simon Peyton Jones的说法:

您编写的语言会严重影响用该语言编写的程序的设计.例如,在OO世界中,许多人使用UML来绘制设计.在Haskell或ML中,人们会写入类型签名.功能程序的大部分初始设计阶段包括编写类型定义.然而,与UML不同,所有这些设计都包含在最终产品中,并且在整个过程中都经过机器检查.

资料来源:编程大师

因此,您实际上不是在绘制所有花哨的UML图,而是undefined在设计阶段编写类型定义.