Hey Emacs, this file consists of -*- Indented-Text -*- !

Here are a few sketchy thoughts upon which my object system
implementation is based.  Many of these are stolen from David Carlton
<carlton@cyclic.com>, though on some issues, he and I disagree.

- Objects should be opaque, disjoint from other types.  It's okay to
  have to add an extra type to a Scheme system to accomplish this,
  though I haven't gotten around to it yet.

- Objects shouldn't be a lot more inefficient than necessary.  It's
  okay to depend somewhat on support from the Scheme system to
  accomplish this.  For instance, generic function dispatch could
  probably be made faster using hash tables, but that might require
  the collaboration of the garbage collector to recompute hash values
  after things have moved around (though this should not cost much for
  a generational collector with sufficiently many generations).

- We shouldn't depend on macros: it is currently possible to do
  everything without them, and without imposing any more cost in
  usability than does, say, the R4RS record proposal.

- The object system shouldn't conflict with any reasonably module
  system.

- Object systems shouldn't try to do anything other than be object
  systems.  Scoping is the business of module systems, not object
  systems.

- I prefer generic functions to having methods defined on each class;
  part of this is simply because I don't like typing (METHOD-CALL FOO
  ...)  when I can get away with typing (FOO BAR ...)  instead.  That
  apart, though, generic functions just make me feel more warm and
  cuddly inside than do methods.  I've not seen any convincing
  arguments as to why one is better than the other.
