Update of /cvsroot/sbcl/sbcl/doc/manual
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv2735/doc/manual
Modified Files:
beyond-ansi.texinfo
Log Message:
0.9.15.45:
Make ENSURE-CLASS and ENSURE-GENERIC-FUNCTION do what AMOP says
regarding the :METACLASS and :GENERIC-FUNCTION-CLASS default
arguments. I don't like it, but that's what it says, and as
Bruno points out on sbcl-devel, no default is right in all
circumstances.
... we didn't call ENSURE-CLASS ourselves except as part of
DEFCLASS' expansion; we did call
ENSURE-GENERIC-FUNCTION, so arrange to call it only
when necessary and only with the right
:generic-function-class argument.
... while we're at it, fix a bug in ENSURE-CLASS, which got
the metaclass wrong if the argument was provided
more than once.
... document one or two more small MOP deviations in the
manual.
Index: beyond-ansi.texinfo
===================================================================
RCS file: /cvsroot/sbcl/sbcl/doc/manual/beyond-ansi.texinfo,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- beyond-ansi.texinfo 28 May 2006 11:02:02 -0000 1.28
+++ beyond-ansi.texinfo 22 Aug 2006 13:23:41 -0000 1.29
@@ -118,6 +118,13 @@
@end lisp
and leads to a class whose instances are funcallable and have one slot.
+@tindex funcallable-standard-object
+@tindex sb-mop:funcallable-standard-object
+Note that this requirement also applies to the class
+@code{sb-mop:funcallable-standard-object}, which has metaclass
+@code{sb-mop:funcallable-standard-class} rather than
+@code{standard-class} as AMOP specifies.
+
@item
the requirement that ``No portable class @math{C_p} may inherit, by
virtue of being a direct or indirect subclass of a specified class, any
@@ -156,6 +163,24 @@
Note that application code may specialize on the @code{new-value}
argument of slot accessors.
+@item
+@findex defclass
+@findex ensure-class
+@findex ensure-class-using-class
+@findex sb-mop:ensure-class
+@findex sb-mop:ensure-class-using-class
+@findex find-class
+@findex class-name
+the class named by the @code{name} argument to @code{ensure-class}, if
+any, is only redefined if it is the proper name of that class;
+otherwise, a new class is created.
+
+This is consistent with the description of @code{ensure-class} in AMOP
+as the functional version of @code{defclass}, which has this behaviour;
+however, it is not consistent with the weaker requirement in AMOP, which
+states that any class found by @code{find-class}, no matter what its
+@code{class-name}, is redefined.
+
@end itemize
@node Support For Unix
|