Во-первых, (= true (something))
можно просто заменить на (something)
без проблем (если только вы на самом деле не пытаетесь различить возвращаемое значение true
и возвращаемое значение, скажем, 1
). Если параметры для возвращаемого значения true
и false
, (something)
само по себе будет работать нормально. Вы также можете использовать слияние вместо в, что может быть немного яснее.
Вы можете попробовать
(bar (if (something)
(merge opts {:a b})
opts))
Это также сработает, хотя и включает в себя необязательный вызов merge
, когда (something)
ложно, хотя с nil
для второго аргумента, merge
должен возвращаться очень быстро.
(bar (merge opts
(when (something)
{:a b})))