获取过滤列表的第一项

Get the first item of filtered list

clojure中有some,在chicken scheme中可以表示为:

(define (some pred coll)
  (lazy-head (lazy-filter pred (list->lazy-seq coll))))

是否有内置的东西?

看看 find from SRFI 1——它的工作原理与您的实现一样:

(find even? '(3 1 4 1 5 9)) ; => 4

但是请注意,这与 Clojure 的some略有不同:Clojure returns将pred的值应用于元素,而 find returns 元素本身。

另请参阅 any,同样来自 SRFI 1,如果您不需要该值,这更可取,只需检查是否存在。