私のclojureプログラムのほとんどで...そして私が見る他の多くのclojureプログラムでは、アトムにある種のグローバル変数があります:
(def *program-state*
(atom {:name "Program"
:var1 1
:var2 "Another value"}))
そして、この状態はコードで時折参照されます。
(defn program-name []
(:name @*program-state*))
この記事を読んでhttp://misko.hevery.com/2008/07/24/how-to-write-3v1l-untestable-code/グローバルな状態を考え直しましたが、どういうわけか、記事に完全に同意しているのに、グローバル状態データを操作するための共通のインターフェイスを提供するため、アトムでハッシュマップを使用しても問題ありません(データを格納するためにさまざまなデータベースを使用するのと同様です)。
この件について他に考えてみたいと思います。