anchor.diff:                     :rehash-size rehash-size
                      :rehash-threshold rehash-threshold))
   
  +;; People rarely provide a :size argument to a hash table unless it’s
  +;; because they anticipate a very large hash table. This means that
  +;; code that uses hash tables often wastes memory. But most hash
  +;; tables made with `dict' are never going to in size, so we size them
  +;; to their contents.
  +
   (defun dict (&rest keys-and-values)
     "A concise constructor for hash tables.
   
  
positive.code: 
       (gethash \"string\" (dict \"string\" t)) => t
       (gethash \"string\" (dict 'eq \"string\" t)) => nil"
    (let ((test (if (oddp (length keys-and-values))
                    (pop keys-and-values)
                    'equal)))
      (values (plist-hash-table keys-and-values :test test))))
  
  (define-compiler-macro dict (&rest keys-and-values)
    (let ((test (if (oddp (length keys-and-values))
  
negative.code:     (with-gensyms (ht)
        `(let ((,ht (make-hash-table
                     :test ,test
                     :size ,(truncate (length keys-and-values) 2))))
           ,@(unsplice
              (when keys-and-values
                `(setf ,@(loop for (key value . nil) on keys-and-values by #'cddr
  