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


Issue ALLOCATE-INSTANCE Writeup

Issue:         ALLOCATE-INSTANCE

References: 88-002R p.1-41

89-003 p.3-35

Related issues: LOAD-OBJECTS

Category: ADDITION

Edit history: 30-Apr-90, Version 1 by Moon

Problem description:

The function page for the generic function ALLOCATE-INSTANCE was

accidentally omitted from 88-002R.

Proposal (ALLOCATE-INSTANCE:ADD):

Add a generic function ALLOCATE-INSTANCE that takes one required

argument, a class, plus initialization arguments, and returns one value,

a freshly created instance of the given class. The class argument must

be an actual class, not a class name, and must not be a built-in class.

The object returned by ALLOCATE-INSTANCE is "uninitialized"; when the

class is a standard class, this means the slots are unbound; when the

class is a structure class, this means the slots' values are unspecified.

Common Lisp does not specify how to add methods to ALLOCATE-INSTANCE;

this capability might be added by the Metaobject Protocol.

This is Symbolics issue #32 and Loosemore's issue #6 of 27 Feb 90.

Examples:

(DEFCLASS MYCLASS () (A B C))

(ALLOCATE-INSTANCE (FIND-CLASS 'MYCLASS))

(SLOT-BOUNDP * 'B) => NIL

Rationale:

Some of the authors of 88-002R say the omission of ALLOCATE-INSTANCE was

simply a mistake. Note that LOAD-OBJECTS:MAKE-LOAD-FORM assumes the

existence of ALLOCATE-INSTANCE and that user-written MAKE-LOAD-FORM

methods that return two values will typically use ALLOCATE-INSTANCE in

the first value.

Current practice:

Symbolics Genera 8.0 does not provide ALLOCATE-INSTANCE (although

it does exist in an internal package). Lucid 4.0.0 Beta-1 provides

ALLOCATE-INSTANCE.

Cost to Implementors:

Any CLOS implementation needs ALLOCATE-INSTANCE or something like it

internally, so implementing this proposal is largely a matter of

exporting the symbol from the COMMON-LISP package and documenting it.

Cost to Users:

None.

Cost of non-adoption:

MAKE-LOAD-FORM would be considerably less useful.

Performance impact:

None other than the impact of adding a symbol to the COMMON-LISP package.

Benefits:

Missing piece of CLOS provided.

Esthetics:

Neutral.

Discussion:

None.


[Starting Points][Contents][Index][Symbols][Glossary][Issues]
Copyright 1996-2005, LispWorks Ltd. All rights reserved.