->>
そのようなパイプラインを考えると:
(defn my-fn []
(->> (get-data)
(do-foo)
(do-bar)
(do-baz)))
さまざまな段階を条件付きにしたい。
頭に浮かんだこれを書く最初の方法は、そのようなものでした:
(defn my-fn [{:keys [foo bar baz]}]
(->> (get-data)
(if foo (do-foo) identity)
(if bar (do-bar) identity)
(if baz (do-baz) identity))
ただし、->>
マクロがフォームに挿入しようとするとif
、パフォーマンス(noopidentity
呼び出しがある)の点で不幸に見えるだけでなく、実際にはコンパイルに失敗します。
これを書くための適切で合理的に乾いた方法は何でしょうか?