以下の関数は2つのことを行います-
- アトムが nil か fetch-agin が true かどうかをチェックしてから、データをフェッチします。
- (add-date-strings) を呼び出してデータを処理します。
上記の2つの懸念を分離するためのより良いパターンは何ですか?
(def retrieved-data (atom nil))
(defn fetch-it!
[fetch-again?]
(if (or fetch-again?
(nil? @retrieved-data))
(->> (exec-services)
(map #(add-date-strings (:time %)))
(reset! retrieved-data))
@retrieved-data))