bearophile wrote:
Robert Fraser:
Ehhh.... why not leave complex and just kill imaginary? That'd solve
most of the problems.
You can't remove only half of a feature of the language, so I don't like this
idea.
I accept to remove them fully if their semantics can be fully replaced by the
std lib. Otherwise just let Don fix the broken things.
Bye,
bearophile
It's not necessarily "removing half a feature". Imaginary numbers aren't
closed under many operations. The idea is that imaginary literals are
turned into complex. So "ireal x = 10i;" becomes "creal x = 0 + 10i;".
Since complex numbers are closed under all the builtin operators, it
eliminates many of the problems (casts from complex to real).
Putting it in a library eliminates the ability to use complex/imaginary
literals (unless it's a runtime type).