[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Issue EQUAL-STRUCTURE



re: [incompatibly changing EQUALP on defstruct instances]
    I believe you yourself have taken a position on some
    issues that the status quo is wrong and needs to be fixed.

Right.  But the issue here is whether the fix is:
  (1) to drastically rip up the current default behaviour, or
  (2) to provide mechanisms that allow users to modify behaviour
      [and presumably, he gets the "default" if he doesn't do so].
I've been favoring (2) over (1).

So as-and-when an EQUALP-GENERIC issues comes out, I would favor
retaining the default behaviour for the various broad meta-classes:

  (1) BUILT-IN-CLASS: behaviour for objects from this metaclass are 
      already detailed in CLtL, on a class-by-class (type-by-type?)
      basis;

  (2) STRUCTURE-CLASS: again, CLtL fairly directly specifies a default
      behaviour that needn't be incompatibly changed;

  (3) STANDARD-CLASS: I'm not sure if 88-002R spells it out, but I thought
      the consensus was that the default behaviour should be to signal
      an error [i.e., you shouldn't let it get that far].  Defaulting to
      EQL would probably be workable too, but wouldn't be as much help
      in finding obscure bugs.

  (4) RANDOM-{user-defined}META-CLASS: Might as well take the same tack as 
      for STANDARD-CLASS, since that is nearly as stringent as possible.


After all, that's what classes (and classes of classes, or "meta-classes") 
are for -- to separate out just the parts you want to be different.  And
currently, I don't see any reason to merge instances of STRUCTURE-OBJECT
in with those of STANDARD-OBJECT [yes, I know, "STRUCTURE-OBJECT" is a bit
of a neolgism, but one needs the term].


-- JonL --