在Haskell的Stack上我能找到一个很好的解释。目前我所知道的是:
发布于 2013-03-22 17:13:45
通常需要使用抽象堆栈接口的原因是,内部表示支持我们希望隐藏的操作。例如,一个可变的链接列表或数组将允许人们在获得内部表示的情况下更改堆栈中间的元素。
在Haskell中,您并没有这个问题,因为列表是单链接和不可变的。您可以对它们进行的唯一操作是使用:
构造函数创建一个新列表(本质上是一个"push“操作),并对列表进行模式匹配,获取列表的head元素和尾部(本质上是"pop”操作)。所有其他列表函数都是在这两个"push和pop“原语之上实现的。
发布于 2013-03-22 16:22:32
在Haskell中使用LYAH中的State创建堆栈有一个很好的解释:
http://learnyouahaskell.com/for-a-few-monads-more#state
https://stackoverflow.com/questions/15574666
复制相似问题