Clay language
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Thu Dec 30 13:50:01 PST 2010
On 12/30/10 3:36 PM, "Jérôme M. Berger" wrote:
> so wrote:
>> On Thu, 30 Dec 2010 21:15:30 +0200, Jérôme M. Berger<jeberger at free.fr>
>> wrote:
>>
>>> Andrei Alexandrescu wrote:
>>>> Many good examples do prove a ton though. Just off the top of my head:
>>>>
>>>> - complex numbers
>>> Multiplication and division are different from each other and from
>>> addition and subtraction.
>>>
>>>> - checked integers
>>>> - checked floating point numbers
>>>> - ranged/constrained numbers
>>> More or less the same case, so I'm not sure that they make three.
>>> Other than that agreed.
>>>
>>>> - big int
>>>> - big float
>>>> - matrices and vectors
>>>> - dimensional analysis (SI units)
>>>> - rational numbers
>>>> - fixed-point numbers
>>> For all of those, multiplication and division are different from
>>> each other and from addition and subtraction.
>>>
>>> So what your examples do is actually prove *Steven's* point: most
>>> of the time, the code is not shared between operators.
>>>
>>> Jerome
>>
>> First, most of these don't even have a division operator defined in math.
>
> ?? The only type in this list without a division operator is vector
> all the others have it.
>
>> Second, you prove Andrei's point, not the other way around, since it
>> makes the generic case easier, particular case harder.
>>
> I'm sorry? What do you call the "generic case" here? All this list
> shows is that each operator needs to be implemented individually
> anyway. Andrei's point was exactly the reverse: he claims that most
> operators can be implemented in groups which clearly isn't the case
> here.
And I stand by that claim. One aspect that seems to have been forgotten
is that types usually implement either op= in terms of op or vice versa.
That savings alone is large.
Andrei
More information about the Digitalmars-d
mailing list