list
まさにpersistentの実装だと思いましたstack
。しかし、実際の機能実装に関する記事に出くわしたとき、それらは常に再帰型/判別共用体を使用しています。なぜ彼らは単純に適応/使用しないのですか'a list
type 'a Stack =
| Nil
| Cons of 'a * 'a Stack
質問を締めくくるために、コメントを回答として投稿しました。
あなたは正しいです。リストを不変のスタックとして使用するには、型の省略形を宣言できます
type 'a Stack = 'a list
@Tomas が言ったように、自分でスタックを実装することは、関数型プログラミングを学ぶ良い練習になります。F# wikibook のStackセクションから最初の文をいくつか引用します。
F# の組み込みリスト データ構造は、基本的に不変のスタックです。確かに使用可能ですが、探索的なコードを作成する目的で、スタックをゼロから実装します。単純な共用体を使用して、スタック内の各ノードを表すことができます。