#

## 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.

Copyright 1996-2005, LispWorks Ltd. All rights reserved.