Pattern matching can be used to determine whether a function matches a design pattern:
(define pattern
'(define (?fun tree)
(if (pair? tree)
(?combine (?fun (car tree))
(?fun (cdr tree)))
(if (?test? tree) ?trueval ?falseval))))
> (match? pattern
'(define (nnums tree)
(if (pair? tree)
(+ (nnums (car tree))
(nnums (cdr tree)))
(if (number? tree) 1 0))) )
((?falseval . 0) (?trueval . 1)
(?test? . number?) (?combine . +)
(?fun . nnums))
Contents    Page-10    Prev    Next    Page+10    Index