[Ecls-list] Method specialization error

Greg Pfeil pfeil at amazon.com
Tue Jan 10 12:15:02 UTC 2006

I'm trying to build Metatilities (used by CL-Containers) on the latest ECL,
and I get an error when it tries to compile this (from l0-clos.lisp):

    (defgeneric samep (thing-1 thing-2)
      (:documentation "Compares two things and returns true if they are the
    same in the sense of being interchangable. Implementations use the
    special variable *samep-tolerance* to specify how close two things need
    to be in order to be 'the same'. See nearly-samep too.")
      (:method (thing-1 thing-2)
               (funcall *samep-test* thing-1 thing-2))
      (:method ((thing-1 fixnum) (thing-2 fixnum))
               (= thing-1 thing-2))
      (:method ((thing-1 number) (thing-2 number))
               (= thing-1 thing-2))
      (:method ((thing-1 real) (thing-2 real))
               (nearly-equal-p thing-1 thing-2 *samep-tolerance*)))

The error is:

    No class named FIXNUM.
       [Condition of type SIMPLE-ERROR]

Of course, specialization can happen on any type, not just classes, so I
don't see why ECL complains. I haven't tried using this package in ECL

Does anyone else see similar behavior?

More information about the ecl-devel mailing list