如何计算布尔列表中 true 元素的数量



我可以写这样的函数

(define (bool-num x) (if x 1 0))
(define (cnt-true lst)
  (foldl + 0 (map bool-num lst)))

但我发现并不优雅,因为球拍具有count功能和false?,但没有true?

所以我可以计算假元素的数量:

(count false? lst)

我错过了什么?

您正在寻找identity的过程:

(count identity '(#t #f #t #t #f))
=> 3
(count identity '(1 2 #t #f #f 9))
=> 4