home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume10 / comobj.lisp / part01 / semantics.asci < prev    next >
Text File  |  1987-07-30  |  3KB  |  68 lines

  1.  
  2.     Semantic Changes for CommonObjects
  3.       on CommonLoops (COOL)
  4.  
  5.  
  6. 1) It is not possible to have seperately defined methods
  7.    inherited if the methods and the child types are
  8.    defined in the same file as the parent. Methods which are generated
  9.    by the parent type definition are inheritable, however.
  10.    In general, defining parent types and methods and 
  11.    child types and methods in seperate files is a good idea.
  12.    The parent types and methods must be defined in the
  13.    compile time environment of the child.
  14.  
  15. 2) The universal methods :PRINT, :DESCRIBE, :TYPEP, :COPY,
  16.    :COPY-INSTANCE, :COPY-STATE, :EQL, :EQUAL, :EQUALP
  17.    :INIT, and :INITIALIZE
  18.    are defined in common for all CommonObjects types. The
  19.    user can redefine these methods for a particular type, 
  20.    but cannot undefine them if the type uses the default 
  21.    method. A warning message is issued if the user tries
  22.    to undefine a default universal method.
  23.  
  24. 3) SELF is SETF-able within a method. SELF will also
  25.    be accepted as an instance variable name.
  26.  
  27. 4) The :VARIABLES suboption for inheritence is not
  28.    supported. Trying to use it will cause an error
  29.    during type definition.
  30.  
  31. 5) The :TYPE suboption of :VAR has no effect. It
  32.    may be included (for documentation purposes)
  33.    and will not cause an error to be signalled.
  34.  
  35. 6) An instance variable named SET-x and an
  36.    instance variable named x which is declared
  37.    settable in the same type cause no warning
  38.    message to be generated.
  39.  
  40. 7) Types are fully defined at compile time (minus
  41.    generated methods). Compiling a type will thus
  42.    cause a defined type in the environment to be
  43.    trashed. The actual time when the type is defined
  44.    is during expansion of the DEFINE-TYPE macro.
  45.  
  46. 8) In order to have the universal methods invoked for 
  47.    the Lisp functions TYPEP, EQL, EQUAL, and EQUALP
  48.    and have TYPE-OF return the CommonObjects type
  49.    rather than the Lisp type for a CommonObjects
  50.    object, the macro CO:IMPORT-SPECIALIZED-FUNCTIONS
  51.    must be invoked in the package where CommonObjects
  52.    is to be used. Special functions which shadow the
  53.    defined Lisp functions are used to avoid problems
  54.    with infinite recursion and excessive CONSing
  55.    which may otherwise result. In addition, the 
  56.    default universal method for TYPEP does not
  57.    signal an error when an undefined type name
  58.    is given.
  59.  
  60. 9) The argument lists of methods with the same
  61.    name on different types must match. The
  62.    exact rules for argument conformity are
  63.    outlined in the Common Lisp Object System
  64.    document (the proposed standard) but for purposes
  65.    of COOL, the lists must have the same number
  66.    of required, &REST, and keyword parameters.
  67.  
  68.