@setchapternewpage odd
@synindex vr fn
-@c $Id: sos.texinfo,v 2.4 1998/03/19 20:28:57 cph Exp $
+@c $Id: sos.texinfo,v 2.5 1999/08/09 16:49:32 cph Exp $
@set TITLE The SOS Reference Manual
-@set EDITION 2.4
-@set UPDATED 19 March 1998
-@set UPDATE-MONTH March 1998
+@set EDITION 2.5
+@set UPDATED 9 August 1999
@ifinfo
-Copyright @copyright{} 1993-98 Massachusetts Institute of Technology
+Copyright @copyright{} 1993-1999 Massachusetts Institute of Technology
This is Edition @value{EDITION}, last updated @value{UPDATED}, of
@cite{@value{TITLE}}.
-This material was developed by the Scheme project at the Massachusetts
-Institute of Technology, Department of Electrical Engineering and
-Computer Science. Permission to copy this document, to redistribute it,
-and to use it for any purpose is granted, subject to the following
-restrictions and understandings.
-
-@enumerate
-@item
-Any copy made of this document must include this copyright notice in
-full.
-
-@item
-Users of this document agree to make their best efforts (a) to return to
-the MIT Scheme project any improvements or extensions that they make, so
-that these may be included in future releases; and (b) to inform MIT of
-noteworthy uses of this document.
-
-@item
-All materials developed as a consequence of the use of this document shall
-duly acknowledge such use, in accordance with the usual standards of
-acknowledging credit in academic research.
-
-@item
-MIT has made no warrantee or representation that the contents of this
-document will be error-free, and MIT is under no obligation to provide any
-services, by way of maintenance, update, or otherwise.
-
-@item
-In conjunction with products arising from the use of this material, there
-shall be no use of the name of the Massachusetts Institute of Technology
-nor of any adaptation thereof in any advertising, promotional, or sales
-literature without prior written consent from MIT in each case.
-@end enumerate
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+@ignore
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
+@end ignore
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Massachusetts Institute of Technology.
@end ifinfo
@titlepage
@title @value{TITLE}
@subtitle Edition @value{EDITION}
-@subtitle @value{UPDATE-MONTH}
+@subtitle @value{UPDATED}
@author by Chris Hanson
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1993-98 Massachusetts Institute of Technology
-
-This material was developed by the Scheme project at the Massachusetts
-Institute of Technology, Department of Electrical Engineering and
-Computer Science. Permission to copy this document, to redistribute it,
-and to use it for any purpose is granted, subject to the following
-restrictions and understandings.
-
-@enumerate
-@item
-Any copy made of this document must include this copyright notice in
-full.
-
-@item
-Users of this document agree to make their best efforts (a) to return to
-the MIT Scheme project any improvements or extensions that they make, so
-that these may be included in future releases; and (b) to inform MIT of
-noteworthy uses of this document.
+Copyright @copyright{} 1993-1999 Massachusetts Institute of Technology
-@item
-All materials developed as a consequence of the use of this document shall
-duly acknowledge such use, in accordance with the usual standards of
-acknowledging credit in academic research.
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
-@item
-MIT has made no warrantee or representation that the contents of this
-document will be error-free, and MIT is under no obligation to provide any
-services, by way of maintenance, update, or otherwise.
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
-@item
-In conjunction with products arising from the use of this material, there
-shall be no use of the name of the Massachusetts Institute of Technology
-nor of any adaptation thereof in any advertising, promotional, or sales
-literature without prior written consent from MIT in each case.
-@end enumerate
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Massachusetts Institute of Technology.
@end titlepage
-@ifinfo
-@node Top, Object System, (dir), (dir)
+@node Top, Introduction, (dir), (dir)
+@ifinfo
This is Edition @value{EDITION}, last updated @value{UPDATED}, of
@cite{The SOS Reference Manual}.
+@end ifinfo
@menu
-* Object System::
+* Introduction::
+* Classes::
+* Instances::
+* Slots::
+* Generic Procedures::
+* Methods::
+* Printing::
* Variable Index::
* Concept Index::
@end menu
-@end ifinfo
-@node Object System, Variable Index, Top, Top
-@chapter An Object System
+@node Introduction, Classes, Top, Top
+@unnumbered Introduction
@sc{sos} is a Scheme @dfn{object system} derived from Tiny @sc{clos}
@footnote{Tiny @sc{clos} was written by Gregor Kiczales of Xerox
* Printing::
@end menu
-@node Classes, Instances, Object System, Object System
-@section Classes
+@node Classes, Instances, Introduction, Top
+@chapter Classes
@cindex class
@cindex instance
@end menu
@node Class Datatype, Predefined Classes, Classes, Classes
-@subsection Class Datatype
+@section Class Datatype
The procedures in this section may be used to construct and inspect
classes.
@end deffn
@node Predefined Classes, Record Classes, Class Datatype, Classes
-@subsection Predefined Classes
+@section Predefined Classes
@cindex predefined classes
@sc{sos} provides a rich set of predefined classes that can be used to
@end defvr
@node Record Classes, Specializers, Predefined Classes, Classes
-@subsection Record Classes
+@section Record Classes
@cindex record class
@sc{sos} allows generic procedures to discriminate on record types.
@end deffn
@node Specializers, , Record Classes, Classes
-@subsection Specializers
+@section Specializers
@cindex specializer
A @dfn{specializer} is a generalization of a class. A specializer is
elements is equivalent.
@end deffn
-@node Instances, Slots, Classes, Object System
-@section Instances
+@node Instances, Slots, Classes, Top
+@chapter Instances
@cindex instance
An @dfn{instance} is a compound data structure much like a record,
an instance of @var{specializer} and @code{#f} otherwise.
@end deffn
-@node Slots, Generic Procedures, Instances, Object System
-@section Slots
+@node Slots, Generic Procedures, Instances, Top
+@chapter Slots
@cindex slot
An instance has zero or more named slots; the name of a slot is a
@end menu
@node Slot Descriptors, Slot Access Methods, Slots, Slots
-@subsection Slot Descriptors
+@section Slot Descriptors
@cindex slot descriptor
Slots are represented by @dfn{slot descriptors}, which are data
@end deffn
@node Slot Access Methods, Slot Access Constructors, Slot Descriptors, Slots
-@subsection Slot Access Methods
+@section Slot Access Methods
@cindex accessor, for slot
@cindex slot accessor
@end deffn
@node Slot Access Constructors, Slot Access Procedures, Slot Access Methods, Slots
-@subsection Slot Access Constructors
+@section Slot Access Constructors
For convenience, and for consistency with the record-accessor procedures
@code{record-accessor} and @code{record-modifier}, each of the above
@end deffn
@node Slot Access Procedures, , Slot Access Constructors, Slots
-@subsection Slot Access Procedures
+@section Slot Access Procedures
Finally, there is another set of three procedures, which access the
contents of a slot directly, given an instance and a slot name. These
initialized, otherwise returns @code{#f}.
@end deffn
-@node Generic Procedures, Methods, Slots, Object System
-@section Generic Procedures
+@node Generic Procedures, Methods, Slots, Top
+@chapter Generic Procedures
@cindex generic procedure
Like an ordinary Scheme procedure, a generic procedure takes arguments,
@end menu
@node Generic Procedure Datatype, Method Storage, Generic Procedures, Generic Procedures
-@subsection Generic Procedure Datatype
+@section Generic Procedure Datatype
The following definitions are used to construct and inspect generic
procedures.
@end deffn
@node Method Storage, Effective Method Procedure, Generic Procedure Datatype, Generic Procedures
-@subsection Method Storage
+@section Method Storage
Methods are stored in generic procedures. When a generic procedure is
called, it selects a subset of its stored methods (using
@end deffn
@node Effective Method Procedure, , Method Storage, Generic Procedures
-@subsection Effective Method Procedure
+@section Effective Method Procedure
@cindex effective method procedure
@cindex emp
@end lisp
@end deffn
-@node Methods, Printing, Generic Procedures, Object System
-@section Methods
+@node Methods, Printing, Generic Procedures, Top
+@chapter Methods
@cindex method
A method contains a method procedure and a sequence of @dfn{parameter
@end menu
@node Method Datatype, Method Syntax, Methods, Methods
-@subsection Method Datatype
+@section Method Datatype
The following procedures are used to construct and inspect methods.
@end deffn
@node Method Syntax, Chained Methods, Method Datatype, Methods
-@subsection Method Syntax
+@section Method Syntax
The following syntactic forms greatly simplify the definition of
methods, and of adding them to generic procedures.
@end deffn
@node Chained Methods, Computed Methods, Method Syntax, Methods
-@subsection Chained Methods
+@section Chained Methods
@cindex chained method
Sometimes it is useful to have a method that adds functionality to
@end deffn
@node Computed Methods, , Chained Methods, Methods
-@subsection Computed Methods
+@section Computed Methods
@cindex computed method
A @dfn{computed method} is a powerful mechanism that provides the
Returns the key for @var{computed-emp}.
@end deffn
-@node Printing, , Methods, Object System
-@section Printing
+@node Printing, Variable Index, Methods, Top
+@chapter Printing
@cindex printing instances
The following procedures can be used to define a custom printed
@var{instance}, and @dots{} is the output generated by @var{thunk}.
@end deffn
-@node Variable Index, Concept Index, Object System, Top
+@node Variable Index, Concept Index, Printing, Top
@unnumbered Variable Index
@printindex fn