(defun (setf question) (answer quest) (give-answer quest answer)) (defun give-answer (quest answer) (format t "From now on ~a -> ~a~%" quest answer) answer) (defun question (x) (format t "Question: ~a~%" x)) (defvar *OBSERVATION-NUMBER* 0) (defmacro defobs (obs input parsed) "Defines a new input-parsed pair." (when parsed (incf *OBSERVATION-NUMBER*) (format t "> ~a" input) (let ((listv (gensym)) (obsv (gensym))) `(let ((,listv ',parsed) (,obsv ,obs)) (case ,obsv (1.00 (progn (format t " || Yes~%") (setf ,parsed t)))))))) ;; Basic operators (load "operators.lisp") ;; Load knowledge base (load "gac-80k-affirmations.lisp") (load "gac-80k.lisp") ;; Stats (format t "~%Read ~a observations.~%" *OBSERVATION-NUMBER*)