home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
unix
/
volume10
/
comobj.lisp
/
part01
/
semantics.asci
< prev
next >
Wrap
Text File
|
1987-07-30
|
3KB
|
68 lines
Semantic Changes for CommonObjects
on CommonLoops (COOL)
1) It is not possible to have seperately defined methods
inherited if the methods and the child types are
defined in the same file as the parent. Methods which are generated
by the parent type definition are inheritable, however.
In general, defining parent types and methods and
child types and methods in seperate files is a good idea.
The parent types and methods must be defined in the
compile time environment of the child.
2) The universal methods :PRINT, :DESCRIBE, :TYPEP, :COPY,
:COPY-INSTANCE, :COPY-STATE, :EQL, :EQUAL, :EQUALP
:INIT, and :INITIALIZE
are defined in common for all CommonObjects types. The
user can redefine these methods for a particular type,
but cannot undefine them if the type uses the default
method. A warning message is issued if the user tries
to undefine a default universal method.
3) SELF is SETF-able within a method. SELF will also
be accepted as an instance variable name.
4) The :VARIABLES suboption for inheritence is not
supported. Trying to use it will cause an error
during type definition.
5) The :TYPE suboption of :VAR has no effect. It
may be included (for documentation purposes)
and will not cause an error to be signalled.
6) An instance variable named SET-x and an
instance variable named x which is declared
settable in the same type cause no warning
message to be generated.
7) Types are fully defined at compile time (minus
generated methods). Compiling a type will thus
cause a defined type in the environment to be
trashed. The actual time when the type is defined
is during expansion of the DEFINE-TYPE macro.
8) In order to have the universal methods invoked for
the Lisp functions TYPEP, EQL, EQUAL, and EQUALP
and have TYPE-OF return the CommonObjects type
rather than the Lisp type for a CommonObjects
object, the macro CO:IMPORT-SPECIALIZED-FUNCTIONS
must be invoked in the package where CommonObjects
is to be used. Special functions which shadow the
defined Lisp functions are used to avoid problems
with infinite recursion and excessive CONSing
which may otherwise result. In addition, the
default universal method for TYPEP does not
signal an error when an undefined type name
is given.
9) The argument lists of methods with the same
name on different types must match. The
exact rules for argument conformity are
outlined in the Common Lisp Object System
document (the proposed standard) but for purposes
of COOL, the lists must have the same number
of required, &REST, and keyword parameters.