0

Haskell のスタックに関する適切な説明はどこにありますか。現在、私が知っているのは次のとおりです。

  • 従来の抽象データ型は、データの内部表現を完全に隠します

  • リストを使用してポリモーフィック スタックを実装でき、消費者にその内部の仕組みを伝える必要はありません。

4

2 に答える 2

7

抽象スタックインターフェイスを使用する必要がある通常の理由は、内部表現が非表示にしたい操作をサポートしているためです。たとえば、変更可能なリンクリストまたは配列を使用すると、内部表現を取得した場合に、スタックの途中で要素を変更できます。

Haskellでは、リストは単一リンクで不変であるため、この問題は実際には発生しません。それらを使用して実行できる唯一の操作は、コンストラクターを使用して新しいリストを作成し:(基本的に「プッシュ」操作)、リストのパターンマッチングを行い、リストの先頭要素と末尾を取得することです(基本的に「ポップ」操作)。 )。他のすべてのリスト関数は、これら2つの「プッシュアンドポップ」プリミティブの上に実装されています。

于 2013-03-22T17:13:45.010 に答える
2

LYAH で State モナドを使用して Haskell でスタックを作成することについての適切な説明があります。

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

于 2013-03-22T16:22:32.643 に答える