Remove complex and imaginary types?

Robert Fraser fraserofthenight at gmail.com
Mon Jan 7 00:16:16 PST 2008


Oskar Linde wrote:
> Walter Bright wrote:
>> The issue comes up now and then about why have complex and imaginary 
>> types, rather than using structs? All but one of the advantages of 
>> having them be core types can be addressed with advancing compiler 
>> technology. Getting rid of them will release 6 keywords, and make the 
>> core language simpler. Given the increasing complexity of D, this will 
>> help.
>>
>> The remaining advantage is that of imaginary literals, i.e. the i 
>> postfix:
>>
>>     3 + 5i
>>
>> Assuming we solve the literal problem, existing code would only need 
>> to add:
>>
>>     import std.complex;
>>
>> to acquire complex and imaginary types.
> 
> Sounds like a good idea. Complex math is probably only used in a very 
> small subset of D code, and if most advantages of having the types built 
> in are rendered irrelevant I see no reason not to take this opportunity 
> to simplify the language.
> 
> Regarding literals, I'd say this is would be an adequate replacement for 
> the above expression:
> 
>     3 + 5*i
> 
> And last, getting rid of the creal and ireal keywords can only be a good 
> thing. :)
> 

The identifier "i" is rather frequently used, so I don;t think that's a 
good idea. I'd prefer an opPostfix or something that allows literals 
with postfixes to be converted to different types. This would be 
especially nice for dealing with units, i.e.:

writef("%s", toMiles(10km + 13ft));



More information about the Digitalmars-d mailing list