0

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

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

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

4

2 回答 2

7

需要使用抽象堆栈接口的通常原因是内部表示支持我们想要隐藏的操作。例如,如果人们掌握了内部表示,可变链表或数组将允许人们更改堆栈中间的元素。

在 Haskell 中,您并没有真正遇到这个问题,因为列表是单链接且不可变的。您可以对它们执行的唯一操作是使用:构造函数创建一个新列表(本质上是“推送”操作)并模式匹配列表,取回列表的头部元素和尾部(本质上是“弹出”操作)。所有其他列表功能都是在这两个“推送和弹出”原语之上实现的。

于 2013-03-22T17:13:45.010 回答
2

使用 LYAH 中的 State monad 在 Haskell 中创建堆栈有一个很好的解释:

http://learnyouahaskell.com/for-a-few-monads-more#state

于 2013-03-22T16:22:32.643 回答