Re: Generics vs. Message passing: object namespaces

[email protected] (Jeremy H. Brown) Fri, 23 Feb 2007 14:10:09 -0500
Newsgroups gmane.comp.lang.lightweight
Message-ID <[email protected]>
"Matt Knox" <[email protected]> writes:
> If I understand it correctly, your point is that if you need  the draw
> method from gun, picture, blood, and duel modules, that in an
> object-dispatch system, you can say:
>
> gun.draw args
> duel.draw args
> ...etc.
>
> instead of
> (draw_gun gun args)
>
> But it seems that it should be trivial to have, in a CLOS-style generic
> function system, 'draw' bound to a function that would look at the type of
> its first argument and dispatch to the appropriate GF. Then you'd have:
>
> (draw gun args)
> ...
> and the only differences would be syntax and the ease with which
> autocompletion could be done.
>
> Am I missing something?

Multiple inheritance.  I could have a gun-widget class which inherits
from both gun and picture.  In your scheme, when I say (draw widget
args), which version of draw should execute?  If there's any risk of
this sort of subclassing, you want to write (picture:draw widget args)
or (gun:draw widget args) explicitly.

(Fans of the model-view-controller design pattern will look down on
this specific use of MI, of course.)

Jeremy