[HARLEQUIN][Common Lisp HyperSpec (TM)] [Previous][Up][Next]



References: CLtL p.307 & 86-003 p.4

Category: CHANGE

Edit history: Revision 1 by Skona Brittain 05/13/88

Problem Description:

Structures defined by defstruct currently are required to have at least

one slot. This seems to have been a mistake in the design of the language.


Allow a call to defstruct to have zero slot-descriptions.

i.e. change the + to a * in the syntax of calls to defstruct

given at the bottom of page 307 of CLtL.

Test Case:

(defstruct s), which is not allowed according to CLtL, would be allowed.


The current restriction is in marked contrast to the generality allowed

elsewhere in the language. And removing it slightly increases the

usefulness of defstruct - by allowing the zero slot case when it may be

deemed useful and by not requiring a check for it when it doesn't matter.

Current Practice:

KCL allows zero slots.

Cost to Implementors:

None for implementations that currently allow zero slots.

Very slight for others.

Cost to Users:



Slightly increases the usefulness of defstruct and is aesthetic.


In general, it is more aesthetic to allow for generality rather than to

specifically prohibit a particular case. And the generality in this case

is consistent with that of many other features of the language, such as

that arrays can be empty, functions like + and list can take zero arguments,



Although this issue was mentioned in Guy's original issues file, it has

not been officially discussed since.

[Starting Points][Contents][Index][Symbols][Glossary][Issues]
Copyright 1996, The Harlequin Group Limited. All Rights Reserved.