やや高価な計算 (データベースの開始) があり、実際に使用する場合にのみデータベースを作成したいと考えています。使用された (または逆参照された) 場合にのみその値を評価する参照変数 (または可能であれば単純な変数) を探しています。概念的には次のようなもの。
(def v (lazy-var (fn [] (do (println "REALLY EXPENSIVE FUNCTION") true))))
将来、var v を使用するか、@v を呼び出すと、"REALLY EXPENSIVE FUNCTION" が出力され、v の値が true になります。ここで重要なことは、変数が (逆) 参照されるまで fn が評価されないことです。必要に応じて、変数の値を計算するために関数が 1 回だけ評価されます。これはclojureで可能ですか?