(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*)
