建模/记录功能程序

Jim*_*ing 18 uml modeling functional-programming clojure

我发现UML对于记录OO系统的各个方面非常有用,特别是整体架构和序列图的类图,以说明特定的例程.我想为我的clojure应用程序做同样的事情.我目前对模型驱动开发不感兴趣,只是简单地介绍应用程序的工作方式.

UML是一种常见/合理的函数式编程建模方法吗?FP的UML有更好的替代方案吗?

Art*_*ldt 6

惯用Clojure代码中的"单个数据结构上的许多函数"方法降低了典型的"这使用"UML图,因为许多函数最终指向map/reduce/filter.
我得到的印象是因为Clojure是一种更加以数据为中心的语言的方式可视化数据流可以帮助比当你懒惰的评价考虑可视化控制流的一种方式了.获得构建序列的函数的"管道"图非常有用.
map和reduce等将把它们变成树


Nor*_*sey 4

大多数函数式程序员更喜欢类型而不是图表。(我的意思是广义上的类型,包括 Caml“模块类型”、SML“签名”和 PLT 方案“单元”等内容。)为了传达大型应用程序的工作原理,我建议三件事:

  • 给出每个模块的类型。既然您使用的是 Clojure,您可能想看看 Matthew Flatt 和 Matthias Felleisen 发明的“Units”语言。这个想法是记录模块所依赖和模块提供的类型和操作。

  • 给出接口的导入依赖关系。这里图表可能很有用;在许多情况下,您可以使用自动创建图表dot。这样做的优点是图表始终准确地反映代码。

  • 对于某些系统,您可能想讨论实现的重要依赖性。但通常情况下并非如此——将接口与实现分开的一点是,实现只能根据它们所依赖的接口来理解。

最近有一个相关的问题是关于函数式语言的架构思维