Matching and substitution can be combined to transform an input from a pattern-pair: a list of matching pattern and output pattern.
(defun transf (pattern-list input) (let ((bindings (match (first pattern-list) input)) (test (third pattern-list))) (if (and bindings (or (null test) (eval (sublisq bindings test)))) (progn (dolist (var (fourth pattern-list)) (push (cons (car var) (eval (sublisq bindings (cadr var)))) bindings) ) (sublis bindings (second pattern-list))) 'match-failure) ))
Contents    Page-10    Prev    Next    Page+10    Index