Haskellのデータは不変なので、どの関数でも変更できるリストはどのようにグローバルに保存するのですか?muiltithreadをループに格納するか、リストをファイルに書き出しますか? ユーザーがクリックするボタンの量を記録する必要があります。Haskell不変のデータ
答えて
通常、あなたが言うように、Haskellのデータは(ほとんど)不変です。
リストから始め、一連の更新関数を実行する場合、各関数はリストとして引数をとり、その結果として更新リストを返します。次に、各アップデートの出力を次のアップデータに送る調整機能(おそらくmain
、これがあなたのプログラムのすべてである場合)を持っています。
暗黙の状態更新でプログラムするState monadのようなものを使用するか、または実際にその場で物事を更新することができ、暗黙の状態更新でプログラムするIOモナドでSTモナドやIORefsでSTRefsを使用することが可能です。しかし、Haskellのプログラマは、通常、そのようなモナドのプログラムの大部分を、書き込み可能な値への暗黙的なグローバルなアクセスを持たないようにしたいと考えています。
状態モナド(またはioモナド、STモナドなど)を使用します。あるいは、すべての関数にパラメータとして渡して、すべての関数から新しい値を返すことができます(これは、さまざまなモナドがあなたのために行うものです)。
状態を必要とするすべての機能をモナドに使用せずにグローバル可変状態を持つ方法はありません。これは、Haskellの設計者が意図的に選択したものです。すべての非モナド関数は、明示的に透明である必要があります(これは、関数が常に与えられた入力セットに対して同じ値を返すことを意味します)。モナドでない関数であれば、可変状態を返し、参照透過性に違反する可能性があります。
技術的には、モナド関数もまた参照性があり、副作用をシミュレートするものであっても、(モナドの一部として隠されている)余分なワールドパラメータを取得して返すことでこれを行います。
そうではありませんが、まったく正しいですが、閉じています(隠されたワールドパラメータはなく、変更可能な状態のために任意のMonadを使用することはできません)。 – ivanm
- 1. Haskellの動的データ・タイプの変更
- 2. Haskellの不変変数とは何ですか?
- 3. 形質の不変のデータ
- 4. Haskellの "Wait-free"データ
- 5. Haskellのデータ型エラー
- 6. Haskellの "Dependent optional"データ
- 7. Haskellのデータ型が
- 8. doブロックのHaskellタイプの不一致
- 9. 不明なタイプのHaskell(basic)を表示
- 10. Haskellの不足しているファイル
- 11. jsonデータover map haskell
- 12. Haskellのデータ型エラーPBMfile
- 13. Haskell - データの宣言/使用
- 14. Haskell - データ型の結合?
- 15. Haskellの代数的データ型
- 16. Haskell foldr algrebraicのデータ型
- 17. Haskellのデータ構造は、メソッド
- 18. GADTとデータ型のHaskellパターンマッチング
- 19. Haskellデータ型フィルタサブリストのリスト
- 20. Hadoop不変vsデータ型変更可能
- 21. Haskell:データの複数の型変数のインスタンス?
- 22. Javaの不変オブジェクトとデータへのアクセス
- 23. Haskell AST不完全な位置情報
- 24. 不明なhaskell演算子。 `<>`
- 25. 不変のデータ構造を持つRxJS?
- 26. なぜhaskellでデータ型を変更するのですか?
- 27. Haskellコード行がコンパイルされていません: "不正なデータ型コンテキスト"
- 28. Haskellデータに入力する
- 29. haskellでデータを渡す
- 30. Haskellの型間の変換
広く言えば、あなたはそうではありません。特に初心者の方には、おそらくあなたがハスケルに他の言語を書こうとしていることを意味します。 –