コンストラクタが受け取る引数の形式を変更したい - lisp-cookbook-ja/common-lisp GitHub Wiki
defstructで作成する構造体のコンストラクタの引数はデフォルトでは、キーワード引数となりますが、:constructorを指定することにより変更することが可能です。
デフォルト
(defstruct foo x y z)
(make-foo :x 1 :y 2 :z 3)
;=> #S(FOO :X 1 :Y 2 :Z 3)
(make-foo 1 2 3)
;>>> error
必須引数
(defstruct (bar (:constructor make-bar (x y z)))
x y z)
(make-bar 1 2 3)
;=> #S(BAR :X 1 :Y 2 :Z 3)
(make-bar)
;>>> error
オプショナル引数
(defstruct (baz (:constructor make-baz (&optional x y z)))
x y z)
(make-baz 1)
;=> #S(BAZ :X 1 :Y NIL :Z NIL)
(make-baz)
;=> #S(BAZ :X NIL :Y NIL :Z NIL)