user=> (defn find-first
[f coll]
(first (filter f coll)))
#'user/find-first
user=> (find-first #(= % 1) [3 4 1])
1
Edit: A concurrency. 🙂 No. It does not apply f to the whole list. Only to the elements up to the first matching one due to laziness of filter.