home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / e / e070 / 5.ddi / EXPLORER / VIEWER / MATCHING.D < prev    next >
Encoding:
Text File  |  1984-10-20  |  2.8 KB  |  69 lines

  1. ;;;; This file contains sample data and procedures for
  2. ;;;; demonstrating matching programs.
  3.  
  4. ;;; This section contains an algebra problem.
  5.  
  6. (SETF D
  7. '(THE NUMBER OF CUSTOMERS TOM GETS
  8.  IS
  9.  THE SUM OF TWICE THE SQUARE OF THE NUMBER OF ADS HE RUNS
  10.  AND THE COST OF THE ADD))
  11.  
  12. ;;; This section contains an algebra translation program which
  13. ;;; uses MATCH.  It is patterned after STUDENT, an early
  14. ;;; Artificial Intelligence program.
  15.  
  16. (DEFUN TRANSLATE (E)
  17.   (LET (A-LIST NIL) 
  18.     (COND ((SETQ A-LIST (MATCH '((+ L) IS (+ R)) E NIL))
  19.            `(= ,(TRANSLATE (MATCH-VALUE 'L A-LIST))
  20.                ,(TRANSLATE (MATCH-VALUE 'R A-LIST))))
  21.           ((SETQ A-LIST (MATCH '(THE DIFFERENCE BETWEEN (+ L)
  22.                                      AND (+ R)) E NIL))
  23.            `(- ,(TRANSLATE (MATCH-VALUE 'L A-LIST))
  24.                ,(TRANSLATE (MATCH-VALUE 'R A-LIST))))
  25.           ((SETQ A-LIST (MATCH '(THE SUM OF (+ L) AND (+ R)) E NIL))
  26.            `(+ ,(TRANSLATE (MATCH-VALUE 'L A-LIST))
  27.                ,(TRANSLATE (MATCH-VALUE 'R A-LIST))))
  28.           ((SETQ A-LIST (MATCH '((+ L) TIMES (+ R)) E NIL))
  29.            `(* ,(TRANSLATE (MATCH-VALUE 'L A-LIST))
  30.                ,(TRANSLATE (MATCH-VALUE 'R A-LIST))))
  31.           ((SETQ A-LIST (MATCH '(TWICE (+ R)) E NIL))
  32.            `(* 2 ,(TRANSLATE (MATCH-VALUE 'R A-LIST))))
  33.           ((SETQ A-LIST (MATCH '(THE SQUARE OF (+ R)) E NIL))
  34.            `(EXPT ,(TRANSLATE (MATCH-VALUE 'R A-LIST)) 2))
  35.           ((SETQ A-LIST (MATCH '((+ L) SQUARED) E NIL))
  36.            `(EXPT ,(TRANSLATE (MATCH-VALUE 'L A-LIST)) 2))
  37.           ((SETQ A-LIST (MATCH '((RESTRICT (> V) NUMBERP)) E NIL)) 
  38.            (MATCH-VALUE 'V A-LIST))
  39.           (T E))))
  40.  
  41. ;;; This section contains a pseudo-psychiatrist program.  It is
  42. ;;; patterned after DOCTOR, another early Artificial Intelligence
  43. ;;; program, also known as ELIZA.
  44.  
  45. (DEFUN DOCTOR ()
  46.   (PRINT '(SPEAK UP!))
  47.   (TERPRI)
  48.   (DO ((S (READ) (READ)) (A-LIST NIL NIL) (MOTHER))
  49.       (NIL)
  50.     (COND ((SETQ A-LIST (MATCH '(I AM WORRIED (+ L)) S NIL))
  51.            (PRINT `(HOW LONG HAVE YOU BEEN WORRIED
  52.                         ,@(MATCH-VALUE 'L A-LIST))))
  53.           ((MATCH '(+ MOTHER +) S NIL)
  54.            (SETQ MOTHER T)
  55.            (PRINT '(TELL ME MORE ABOUT YOUR FAMILY)))
  56.           ((MATCH '(+ COMPUTERS +) S NIL)
  57.            (PRINT '(DO MACHINES FRIGHTEN YOU)))
  58.           ((OR (MATCH '(NO) S NIL)
  59.                (MATCH '(YES) S NIL))
  60.            (PRINT '(PLEASE DO NOT BE SO SHORT WITH ME)))
  61.           ((MATCH '(+ (RESTRICT ? BAD-WORD-P) +) S NIL)
  62.            (PRINT '(PLEASE DO NOT USE WORDS LIKE THAT)))
  63.           (MOTHER (SETQ MOTHER NIL)
  64.                   (PRINT '(EARLIER YOU SPOKE OF YOUR MOTHER)))
  65.           (T (PRINT '(I AM SORRY OUR TIME IS UP))
  66.              (RETURN 'GOODBYE)))
  67.     (TERPRI)))
  68.  
  69.