什么是Haskell中的一些抽象数据类型,它们与代数数据类型有什么不同?

问题描述:

Haskell中的抽象数据类型的一些示例以及它们与代数数据类型有什么特别的区别?什么是Haskell中的一些抽象数据类型,它们与代数数据类型有什么不同?

抽象数据类型不会导出它们的实现,而是倾向于导出可用于构建和使用它们的函数。 containers包装中有许多奇妙且经常使用的示例; Map类型立即引发注意,它是一种非常丰富的API类型,但您不能看到实现细节。 Set,Seq和专门的IntMapIntSet类型都是抽象的。

所有的Haskell类型都是代数的 - 这仅仅意味着它们都是由和,产品,函数类型和递归构成的。

+0

您是否还有更多可供我们深入研究的抽象数据类型的例子? – McLeodx

+0

像'Int'和'Char'这样的原始类型是否真的被认为是代数? – dfeuer

+0

@dfeuer当然,他们只是(大,但)有限的总和。 –