Hi ! I'm continuing my experiments with slot type checking, on structures this time. Consider this:
(defstruct mystruct (slot "foo" :type single-float)) Regardless of the optimize settings, I will get an error every time I try to create a mystruct object; so it seems that CMU-CL performs structure slot type checking all the time. However, in the following case: (defstruct mystruct (slot "foo" :type fixnum)) I *never* get an error. I find this a bit inconsistent. Here's a wild guess that might explain this behavior: if it goes like in SBCL, fixnums are represented in structs in raw form, with their tag, so the consequence is that there is no need for any type checking[1] to guarantee that the slot can be accessed (read and written) properly, even with something else than a fixnum. That would be different with single-float's if they use a specialized representation in structs, in which case you have to be more cautious when accessing the slot. Comments ? Footnotes: [1] appart from honoring the user's type declaration of course -- Resistance is futile. You will be jazzimilated. Scientific site: http://www.lrde.epita.fr/~didier Music (Jazz) site: http://www.didierverna.com EPITA/LRDE, 14-16 rue Voltaire, 94276 Le Kremlin-BicĂȘtre, France Tel. +33 (0)1 44 08 01 85 Fax. +33 (0)1 53 14 59 22