Haskell Stack解释

Zee*_*eeV 0 stack haskell

我在哪里可以找到Haskell中Stack的一个很好的解释.目前我所知道的是:

  • 传统的抽象数据类型完全隐藏了数据的内部表示

  • 可以使用列表实现多态堆栈,而无需告知消费者其内部工作方式.

hug*_*omg 7

需要使用抽象堆栈接口的通常原因是因为内部表示支持我们想要隐藏的操作.例如,一个可变链表或数组可以让人们在拥有内部表示的情况下更改堆栈中间的元素.

在Haskell中你没有真正遇到这个问题,因为列表是单链接且不可变的.你可以用它们做的唯一操作是用:构造函数创建一个新列表(本质上是一个"推"操作)并模式匹配列表,返回head元素和列表尾部(本质上是一个"pop"操作).所有其他列表函数都在这两个"push and pop"原语之上实现.