home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / aijournl / 1986_10 / inside3.ltg < prev    next >
Text File  |  1986-07-16  |  1KB  |  44 lines

  1.  
  2. LISTING 3
  3.  
  4. ;;; Production System.  Copyright Raul E. Valdes-Perez, 1986.  All Rights Reserved.
  5. ;;; USER FUNCTIONS ARE:
  6. ;;; (defrule name lhs rhs)
  7. ;;; (fact datum)
  8. ;;; (data)
  9. ;;; (run)
  10. ;;; (see-rule rule)
  11. ;;;
  12. ;;; GLOBAL VARIABLES ARE:
  13. ;;; *rules*
  14. ;;; *facts*
  15.  
  16. (defun defrule (name lhs rhs)
  17.   (prog (rule)
  18.     (setq rule (gensym 'r))
  19.     (putprop rule name 'name)
  20.     (putprop rule (cdr (assoc 'patterns lhs)) 'patterns)
  21.     (putprop rule (cdr (assoc 'assert rhs)) 'assert)
  22.     (putprop rule (cdr (assoc 'delete rhs)) 'delete)
  23.     (setq *rules* (cons rule *rules*))))
  24.  
  25. ;;; user adds a fact
  26. (defun fact (datum)
  27.   (add-fact datum 'user))
  28.  
  29. (defun add-fact (datum origin)
  30.   (prog (fact)
  31.     (setq fact (gensym 'f))
  32.     (putprop fact datum 'datum)
  33.     (putprop fact origin 'origin)
  34.     (setq *facts* (cons fact *facts*))))
  35.     
  36. ;;; print data in working memory
  37. (defun data ()
  38.   (data2 *facts*))
  39.  
  40. (defun data2 (f)
  41.   (cond ((null f) nil)
  42.     (t (pr (get (car f) 'datum))
  43.        (data2 (cdr f)))))
  44.