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

CLOS vs FLAVORS questions



    Date: Wed, 29 Jan 1992 20:35 PST
    From: Barry Margolin <barmar@Think.COM>

    Disclaimer: I haven't actually done any nontrivial CLOS programming.

       Date: Wed, 29 Jan 92 17:37:03 PST
       From: jbarnett@charming.nrtc.northrop.com

       Are CLOS programmers really able to use the dispatch-on-multiple-args
       capability effectively?  Does EQL dispatching get used in nontrivial
       ways (same argument specialized sometimes by class, sometimes by a
       symbol, etc.)?

    I've been told that people use this to optimize some special cases.  For
    instance, one might write:

    (defmethod plus ((x number) (y number))
      (+ x y))

    (defmethod plus ((x number) (y (eql 0)))
      x)

    (defmethod plus ((x (eql 0)) (y number))
      y)

    (defmethod plus ((x (eql 0)) (y (eql 0)))
      0)

I don't believe code like this will actually result in a speed improvement.
It's more likely to be used to dispose of inconventient special cases, and
to allow distributed specification of case handlers.