From: Kalle Olavi Niemitalo
Subject: value of elements skipped with :initial-offset
Date: 
Message-ID: <87wuzvzzof.fsf@Astalo.y2000.kon.iki.fi>
In Debian CMUCL 3.0.5:

  * (defstruct (foo (:type list) (:initial-offset 1)))
  FOO
  * (make-foo)
  (NIL)

Does Common Lisp guarantee that the value in the list element
that was skipped with :initial-offset is NIL?  If not, is it
even safe to print the value?

If I had specified (:type (vector fixnum)), then NIL might not
fit in the vector, so the standard can't require NIL as an
initial value in that case.  Furthermore, the consequences are
undefined if I read either uninitialized slots of a structure or
uninitialized elements of an array made with MAKE-ARRAY, so I
assume the same holds for uninitialized vector elements allocated
as part of a structure.

With MAKE-LIST however, all elements are always initialized;
and the "make-annotated-binop" example in the description of
DEFSTRUCT in CLHS looks like the NILs are to be expected.


P.S. The "Arguments and Values" section claims that type can be
(vector size); I think that should be (vector element-type).