1

listまさにpersistentの実装だと思いましたstack。しかし、実際の機能実装に関する記事に出くわしたとき、それらは常に再帰型/判別共用体を使用しています。なぜ彼らは単純に適応/使用しないのですか'a list

type 'a Stack = 
    | Nil
    | Cons of 'a * 'a Stack
4

1 に答える 1

1

質問を締めくくるために、コメントを回答として投稿しました。

あなたは正しいです。リストを不変のスタックとして使用するには、型の省略形を宣言できます

type 'a Stack = 'a list

@Tomas が言ったように、自分でスタックを実装することは、関数型プログラミングを学ぶ良い練習になります。F# wikibook のStackセクションから最初の文をいくつか引用します。

F# の組み込みリスト データ構造は、基本的に不変のスタックです。確かに使用可能ですが、探索的なコードを作成する目的で、スタックをゼロから実装します。単純な共用体を使用して、スタック内の各ノードを表すことができます。

于 2012-10-02T15:32:12.600 に答える