したがって、私の質問は、プログラムが実行する必要がある特定のアクションで可変状態を回避できるかどうかについてです。
いくつかのコンテキスト: 約 1 週間前、Clojure でプログラミングを学び、関数型プログラミングを独学することにしました。(日中は、主に C# を使用して Web 開発者として働いています。
私の経験では、言語を学ぶ最良の方法は、プロジェクトから始めることです。とにかく必要なものを作成することにしました。それは、XML ファイルからテキスト スニペットを読み取り、他のテキスト ファイルを検索して置換する (そして矛盾を検出する) ための小さなツールです。
ファイルを必要なマップのリストに解析したところまで来ましたが、ここに問題があります。私のプログラムには何もする必要がありません。そして、ユーザーが (javax.swing-button をクリックすると、私のプログラムはすべてを忘れてしまいます。
関数型プログラマーはこれをどのように解決しますか?
私が思いついた可能な解決策:
-モナド。(複雑さを構築するのに最適ですが、関数の実行が停止すると消えます。
-ユーザーがボタンをクリックするたびにディスクからファイルを再度読み取る: ばかげているようです。
-ファイルのコンテンツをフォーム コントロール内に保存します。不正行為のように思えます (また、単に間違っています。
-ファイルが解析されると、結果のデータ構造への参照を使用してクロージャーを作成し、これを新しいイベント ハンドラーにインストールします。
これを ^dynamic 変数なしではできない状況として正しく識別したかどうか、誰が教えてくれますか?
どんなポインタでも大歓迎です.)))))
編集:コード例を求めているのではありません。はいまたはいいえの答えで十分です。次に何を調べるかについてのヒントかもしれません。質問:clojureプログラムが計算したデータを記憶する方法はありますか、グローバル変数、アトム、ref、またはエージェントを使用せずに、アイドル状態で (次の Java イベントハンドラーが起動されるまで)?
そして、私が尋ねている理由は、関数型スタイルで適切な方法でプログラミングすることを学びたいということであり、基本的には軌道から外れていないかどうかを確認しています.
これまでのすべての有益な回答に感謝します。間違いなく本を読むためのヒントを得ました。それはいつも素晴らしいことです。