previous | index | next

Substituting for Wildcards

     (define answer-by-pattern
       (lambda (query p/a-list)
         (cond ((null? p/a-list)
                (display '(i do not understand)))
               ((matches? (pattern (car p/a-list)) query)
                (let ((subs (substitutions-in-to-match
                             (pattern (car p/a-list))
                             query)))
                  (let ((result (apply (action (car p/a-list))
                                       subs)))
                    (if (null? result)
                        (display '(i do not know))
                        (display result)))))
               (else 
                (answer-by-pattern query (cdr p/a-list))))))

previous | index | next