構造体の要素数を取得する - lisp-cookbook-ja/common-lisp GitHub Wiki

Common Lispの構造体は、ベクタをそのまま利用しているわけではありませんので、単純にインスタンスにlengthを適用すれば要素数が求められるわけではありません。

但し、オプションで、defstructが利用する内部の構造に、vectorか、listを利用することが可能ですので、この場合は、lengthで要素数を求めることが可能です。

(defstruct (va (:type vector))
  x y)

(defstruct (vb (:type vector)
               (:include va))
  z)

(length (make-vb :x 1 :y 2 :z 3))
;=>  3
(defstruct (la (:type list))
  x y)

(defstruct (lb (:type list)
               (:include la))
  z)

(length (make-lb :x 1 :y 2 :z 3))
;=>  3