anchor.diff:      ((list)
        `(:include %read-only-struct))
       ((list* :include type slot-redefs)
  +     ;; Do we need to specify that the slots are read-only? No, since
  +     ;; we can only inherit from read-only structures, and the
  +     ;; specification says that read-only slots cannot be redefined as
  +     ;; mutable by their heirs. However, we still need to process the
  +     ;; slots, so we can support skipping the initform to supply a
  +     ;; `:type' option (which, of course, must be a subtype of the
  +     ;; slot's type in the parent).
        `(:include ,type
                   ,@(mapcar #'read-only-slotdef slot-redefs)))))
   
  
positive.code:             :read-only t
              ,@args))))))
  
  (defmacro defstruct-read-only (name-and-opts &body slots
                                 &environment env)
    "Easily define a defstruct with no mutable slots.
  
  The syntax of `defstruct-read-only' is as close as possible to that of
  
negative.code: 
  There are only a few syntactic differences:
  
  1. To prevent accidentally inheriting mutable slots,
     `defstruct-read-only' does not allow inheritance.
  
  2. The `:type' option may not be used.
  
  