From: Bruno H. <br...@cl...> - 2005-01-28 13:56:51
|
Sam wrote: > >> (let ((c (find-class name))) > >> (if c > >> (class-direct-slots c) > >> (structure-direct-slots name))) > > > > This is a hypothetical use case. Doesn't occur in practice. (Where > > would the 'name' come from?) > > I save my objects in text files, writing type and slot names and values. > Sometimes I use DEFCLASS and sometimes DEFSTRUCT. > I don't want to have to regenerate all my data if I decide to convert my > structs to classes. OK, then you will have to use the (find-class name nil) test. Still, this rare usecase IMO is not worth generating confusion between classes, class names and structure type names. Clarity of concepts is important. > will this work: > (defstruct foo a b c) > (class-direct-slots (find-class 'foo)) Sure. After (defstruct foo a b c) either of these will work: (class-direct-slots (find-class 'foo)) (class-slots (find-class 'foo)) (structure-slots 'foo). Bruno |