anchor.diff:      (if hasp
           info
           (format nil "I know nothing about ~A" noun))))
  +
  +(defreply erase-some-facts ((bot (proto 'sykobot)))
  +  (send-msg bot "#sykosomatic" "deleting facts")
  +  (let ((keys (hash-table-keys (facts bot))))
  +    (dotimes (n *facts-to-remove*) ;;remove approximately *facts-to-remove* facts
  +      (remhash (random-elt keys) (facts bot)))))
  +
   
   (defreply erase-all-facts ((bot (proto 'sykobot)))
     (clrhash (facts bot)))
  
positive.code: (defmessage save-facts (bot))
  (defmessage set-fact (bot noun info))
  (defmessage get-fact (bot noun))
  (defmessage erase-all-facts (bot))
  
  (defreply load-facts ((bot (proto 'sykobot)))
  
negative.code: (in-package :sykobot)
  
  
  ;;; Limiting
  ;;; With 110 facts the size is 4467 bytes.
  ;;; Assuming linear growth (is this valid?) that's 40 bytes per fact.
  ;;; the average human knows 200k words (apparently)
  ;;; so limit this to 100k facts = 3.8mb ~
  (defvar *max-facts-to-store* 100000)
  (defvar *facts-to-remove* 1000)
  (defvar *facts-write-interval* 5)
  ;;;;;;;;;;;;;;
  
  ;;; Facts
  (defcommand fact ("(\\S+)*" topic)
  