anchor.diff:  (defgeneric render (document &key &allow-other-keys)
     (:documentation "Render the given DOCUMENT to HTML."))
   
  +;; Helper Functions
  +
  +(defun add-document (doc)
  +  "Add DOC to the in-memory database. Error if a matching entry is present."
  +  (let ((url (page-url doc)))
  +    (if (gethash url *site*)
  +        (error "There is already an existing document with the url ~a" url)
  +        (setf (gethash url *site*) doc))))
  +
   (defun write-document (document &optional theme-fn &rest render-args)
     "Write the given DOCUMENT to disk as HTML. If THEME-FN is present,
   use it as the template passing any RENDER-ARGS."
  
positive.code:                   (apply #'render-page document theme-fn render-args)
                    (render-page document nil))))
      (write-file (page-path obj) html)))
  
negative.code: (defvar *site* (make-hash-table :test #'equal)
    "An in-memory database to hold all site documents, keyed on page-url.")
  
  ;; Class Methods
  
  (defgeneric publish (doc-type)
    (:documentation "Write pages to disk for all documents of the given DOC-TYPE."))
  