Ola是否提供代数数据类型?

时间:2012-03-04 16:38:14

标签: opa algebraic-data-types

我正在努力深入了解Opa背后的概念。特别是,我很好奇决定不在ML或Haskell中提供有区别的联合(即定义包含零个或多个值的几个构造函数),但要保留它们的记录类型和总和类型。这个决定对我来说是完全有意义的(也许是因为我更倾向于OOP而不是FP),并且似乎可以实现所有可以用歧视联盟完成的事情。

但是,我们可以说语言仍然支持代数数据类型吗?这个问题不是一个实际问题,而是一个关于术语的问题。

是的,Wikipedia说是的,也许应该纠正。

1 个答案:

答案 0 :(得分:3)

在Opa中,一切都是记录,实际上你可以实现可以用歧视联盟做的事情。

在ocaml中你会写type tree = Leaf of int | Node of tree * tree

在Opa中,它将是type tree = {int leaf} or {tree left, tree right}

您可能会注意到,与Ocaml不同,在Opa中,您可以在不明确定义其类型的情况下操纵记录。这就是为什么即使Opa只使用记录,定义区别联合仍然很简单。

是的,你看过http://doc.opalang.org/manual/The-type-system吗?

相关问题