Вы их считаете.Вы создаете процедуру, которая берет список и то, что вы хотите найти, и итерируете этот список, сохраняя счет, и когда вы достигаете конца, вы возвращаете это значение.
Скелет для простого рекурсивного решения:
(define (count-element element lst)
(define (helper lst count)
(cond ((empty? lst) count)
((equal? element <first element>) <recurse whith cdr and increasing count>)
(else <recurse with cdr>)))
(helper lst 0))
Или вы можете использовать foldl
(define (count-element element lst)
(foldl (lambda (e count)
(if <e is the same as element>
<return 1 more than count>
<return count>))
0
lst))
Возможно, есть еще 10 способов сделать это,но первый - самый познавательный, а второй - самый распространенный способ, которым я бы это сделал.Некоторые тесты:
(define test '(a a a a a b b b))
(count-element 'b '()) ; ==> 0
(count-element 'e test) ; ==> 0
(count-element 'a test) ; ==> 5
(count-element 'b test) ; ==> 3