Idiomatic and lazy eventually truthy in a list in Clojure
<p>I'd like to have a function/macro for checking a list to have truthy value eventually, and I hope the evaluation would be lazy. Here is my illustrative implementation without lazy evaluation:</p>

<pre><code>(defn eventual [cols]
  (or (first cols) (if-let [rs (rest cols)]
                     (eventual rs))
                     false))
</code></pre>

<p>Here is a trivial example to illustrate:</p>

<pre><code>(if (eventual [false (+ 1 2) (* 10000 10000)])
  true
  false)
</code></pre>

<p>I feel that there must be an implication with lazy evaluation. Maybe I'm just blinded at the moment. Please help to help. Thanks</p>