纯函数式语言(haskell)用户如何进行设计?他们使用什么替代uml?

How does pure functional language(haskell) users make Design?what alternative to uml they use?

鉴于 haskell 没有概念对象(即使它有关键字 class) Haskell 开发人员如何设计他们的代码?他们如何表示 interaction/entities?他们有替代 uml 的方法吗?或 class 等效?(或者他们甚至关心?)

我不知道任何正式(化)的绘画或描述建筑的概念。

尽管如此,您可以构建您的应用程序

最基本的方法是利用类型系统的表现力:

  • newtype 中包装简单类型 - 或者使用 type 同义词 - 区分 IntAge 值,例如newtype Age = Age Int.
  • 将更复杂的类型组合为现有的产品,例如data Person = Person { name :: String, age :: Age}
  • 或使用求和类型 data Employee = Chef Person | Waiter Person

所有这些数据类型 - 可以做得更精细 - 可以 accessed/modified* 通过记录语法或镜头。我倾向于将数据类型视为我编写的应用程序的骨架 - 并使用编译器来忠实于我在开始时的想法并且 从不 通过使用 unsafeXX 函数。

缺少OO/Encapsulation

我从来没有 - 没有必要将函数附加到对象(我认为这是完全错误的,但这不在这里讨论)。

封装的基本形式可以通过 newtype 和带有导出的模块来完成。

多态性

类型类已经可以做很多事情,如果你还没有使用过它们,它有点像接口,(但输入更少)——但是你可以用类型类等高级东西完成更多的事情家庭。


结论

因此,如果我想绘制我的程序的 structure/architecture,我会从我的 data-types 作为框开始,并使用箭头作为它们之间的函数。并且可能使用 "special" 箱子作为容器类型。

*:从技术上讲,人们通常不会修改内容,而是从旧值创建新值,因为(几乎)一切都是不可变的。