これとは反対のことを効果的に行うマクロを探していmaybe-m
ます。つまり、残りの式を評価せずに、非 nil を返す最初の式の結果が必要です。「ソリューション」が遅延シーケンスを使用する場合、それらはチャンクで評価されるため、この最後の部分は重要です...つまり、不要なときに式が評価される可能性があります。
これが私が探しているものの例です:
(defn really-cool-stuff [a b c]
(first-not-nil
(operation1 a b) ; <-- this returns nil,
(operation2 b c) ; <-- this returns non-nil, the result is returned
(operation3 a b c))) ; <-- this is not evaluated