Haskell中抽象数据类型的一些例子是什么,它们与代数数据类型的具体区别是什么?
抽象数据类型不导出其实现,而是更喜欢导出可用于构建和使用它们的函数。containers
包中有许多精彩且经常使用的示例;Map
类型立即浮现在脑海中,因为它具有非常丰富的 API,但不允许查看其实现详细信息。Set
、Seq
、专门的IntMap
和IntSet
类型也是抽象的。
所有Haskell类型都是代数的——这只是意味着它们都是由总和、乘积、函数类型和递归构造的。