From: Bruno H. <br...@cl...> - 2005-01-25 11:07:20
|
Hi Sam, Just proofreading the modifications of the last weeks. The access to copier, boa constructor and predicate names is well done. Thanks also for introducing the symbolic constants for *defstruct-description-...-location*. I should have done this earlier. Still I will make one change: instead of overloading the accessors class-direct-slots, class-instance-size, I will separate these into different functions structure-direct-slots, structure-instance-size, structure-kconstructors, structure-copier etc. The reason is 1. that the MOP API and your new API are neither a subset nor a superset - the MOP covers all kinds of classes but not LIST/VECTOR structures, and the structure API doesn't cover all kinds of metaclasses -, and 2. that the MOP API is based on a class object, whereas the structure API is based on a symbol. Thus the structure API is better viewed as a layer partially on top of the MOP API, in block diagram: +--------------+ | Structure | | API | +--------------+ | | MOP | | | API | | | | | +--------------+-------+ Therefore it seems better to me to keep these APIs separate. 3. The user might be surprised if by calling (clos:class-direct-slots xyz), where xyz does not name a class, he gets a result not related to classes. Bruno |