The code of Pharo for + **may** be rewritten using double dispatch but
it is not that clear to me
especially the adaptToInteger logic and we do not change for the sake of it :)
There are plenty of places we should improve and that are really important.

In Pillar, or compiler we have many more nodes and there a Visitor is
clearly the way to go.

Now you should try and sketch something and let us know.

There is not need to create a superclass between die and dieHandle
because DD is not based on nominal subtyping.
We just need objects proposing the correct API.

I use abstract superclass when I want to really push on contract or interfaces.
Now in this book I did not want to stress inheritance. So I wanted to
have a solution stressing messages because
often people forget that messages and polymorphism are powerful and
not systematically linked with inheritance.


Stef




On Tue, Aug 29, 2017 at 6:47 PM, Yves Lenfant <lenfan...@wanadoo.fr> wrote:
> Ooops I wasn't int the mailing list, lets try again
>
> Hello Steph,
>
> I have questions about the concept because,probably, I miss something.
> I am not sneaky, let me explain.
>
> If we analyse the Kernel Numbers package, and we dissect the relation
> between Float, Fraction and Integer (Pharo 5.0) for example, the '+' method
> in the class Integer. We read:
>
> + aNumber
>         "Refer to the comment in Number + "
>
>         aNumber isInteger
>                 ifTrue: [ self negative == aNumber negative
>                                 ifTrue: [ ^ (self digitAdd: aNumber)
> normalize ]
>                                 ifFalse: [ ^ self digitSubtract: aNumber ]
> ].
>         aNumber isFraction
>                 ifTrue: [ ^ Fraction
>                                 numerator: self * aNumber denominator +
> aNumber numerator
>                                 denominator: aNumber denominator ].
>         ^ aNumber adaptToInteger: self andSend: #+
>
> and we have similar '+'method containing complementary tests in the other
> class Float and Fraction.
> And an overall '+' method in the class Number
>
> + aNumber
>         "Answer the sum of the receiver and aNumber."
>
>         self subclassResponsibility
>
>
> I precise that a long time ago as an academic exercice, I developped a
> 'Complex' class using this way above (So I add tests).
>
> My questions:
> You say it's better to use double dispatch, so in this case, can we apply it
> for the Number subclasses?
>
> It is good or unnecesary to create a super class 'Dicable' containing a '+'
> method with
>
> + aNumber
>         "Answer the sum of the receiver and aNumber."
>
>         self subclassResponsibility
>
> ? is it wasted time or safe code?
>
> Yves
>
>
>
> --
> View this message in context: 
> http://forum.world.st/new-chapter-on-double-dispatch-for-new-book-tp4963645p4965495.html
> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
>

Reply via email to