如何构建一个用函数式语言编写的应用程序?

7
在函数式编程应用中,代码通常如何组织?您会沿着哪些线路分隔文件、模块、目录等?
1个回答

9
如何在函数式语言中构建应用程序?
与任何其他类型的应用程序没有什么不同:
- 每个模块都隐藏着一个秘密。 - 可能会发生变化的设计决策应该封装在一个模块中。 - 一个模块可能导出一个主要类型、一些辅助类型和一堆相关操作。 - 模块内聚性和耦合性仍然像 Yourdon 和 Constantine 在上世纪70年代所说的那样重要,尽管在函数式语言中你很少需要担心“顺序”形式的内聚性和耦合性。 - 许多函数式语言要求每个文件有一个模块,但是 ML 方言提供了更大的灵活性。然而,压倒性的做法是将一个模块及其接口放入单独的文件中。Objective Caml 将这种约定奉为圭臬。
简而言之,仍然正确的是“表达是编程的本质”(Fred Brooks),并且与任何其他大型应用程序一样,您的模块应该组织起来,以避免无谓地暴露表示。
在函数式编程语言中,有一件略微不同的事情是,你可能会提供一个模块来封装某种执行模式,这种模式体现在高阶函数中。例如,我写了一个基于冒泡排序的模块;我的代码可以将任何贪心算法自动转换为冒泡搜索算法。但像这样完全关于代码且没有真正数据结构的模块是非常罕见的。

与面向对象编程相比,重用发生在计算(函数)级别而非组件(对象)级别。 - Gabriel Ščerbák

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接