G'dayグル、
ビジター パターンを利用する Java ライブラリを活用するコードをいくつか書きました。私が望むのは、ビジターなどの厄介な詳細をすべて、入力パラメーターを受け取り、ビジターによって導出されたすべての状態を含む単純なデータ構造を返す単一の Clojure 関数の背後に隠すことです。
トリックは、Java 側に複数の「visitXXX」コールバックがあり、それらから状態を戻す簡単な方法がないことです (Java は Java であるため、さまざまなビジターによって構築された状態がインスタンス変数に格納されていると想定しています)。 .
私がやったこと (そしてうまくいくようです、fwiw) は、let ブロックでアトムを定義し、各ビジター関数をスワップさせます! Java 訪問コードによって呼び出されたときに値が更新されたアトム。次に、Java ビジターが完了した後、参照解除されたアトムをメインの「ドライバー」関数の最後に返します。
私の質問は次のとおりです。これはアトムの適切な使用法ですか? そうでない場合、これを行うためのより慣用的な方法はありますか?
興味のある方は、問題のコードはこちらです。
免責事項: 私はまだ Clojure n00b であるため、コードはおそらくより目の肥えた目には恐ろしいものです。コメント/フィードバック/批評を歓迎します!
前もって感謝します!