多くの言語では、
if (foo() || bar() || foobar()) { /* do stuff */ }
foo()がtrueを返す場合、bar()とfoobar()は評価されません。
次のClojureコードがあるとします。
(let [a (simple-function args)
b (complex-function args)
c (too-lazy-to-optimize-this-function args)]
(or a b c))
aがtrueと評価された場合、bとcも評価されますか、それとも無視されますか?
ありがとう!