count-if
Der Aufruf (count-if p l) wertet zu einer Zahl aus, die angibt, auf wie viele Elemente der Liste l das Prädikat p zutraf.
> (count-if number? (quote (ah 2 ce de 5)))
2
> (count-if number? (quote (ah be ce)))
0
> (count-if number? nil)
0
Die Funktion count-if ist durch eine restrekursive innere Funktion realisiert, die auf if, null?, first, rest und + basiert:
(setq count-if
(letrec
((count
(lambda (p l n)
(if
(null? l)
n
(if
(p (first l))
(count p (rest l) (+ 1 n))
(count p (rest l) n))))))
(lambda (p l)
(count p l 0))))
> (count-if number? (quote (ah 2 ce de 5)))
2
> (count-if number? (quote (ah be ce)))
0
> (count-if number? nil)
0
Die Funktion count-if ist durch eine restrekursive innere Funktion realisiert, die auf if, null?, first, rest und + basiert:
(setq count-if
(letrec
((count
(lambda (p l n)
(if
(null? l)
n
(if
(p (first l))
(count p (rest l) (+ 1 n))
(count p (rest l) n))))))
(lambda (p l)
(count p l 0))))