;;@ignore
;; Matches an element iff a predicate holds for that element.
(define (p:predicate predicate?)
(matcher:make 'single
(lambda (datum sofar success)
(if (predicate? datum)
(success sofar)
#f))))