| |
| Posted by Walter Bright in reply to bauss | PermalinkReply |
|
Walter Bright
| On 5/19/2022 12:57 AM, bauss wrote:
> On Thursday, 19 May 2022 at 03:46:42 UTC, Walter Bright wrote:
>>
>> Casts are a common source of bugs, not correctness. This is because it is forced override of the type system. If the types change due to refactoring, the cast may no longer be correct, but the programmer will have no way of knowing.
>
> I'd argue that implicit casts are more so in some cases.
D's rules added some constraints to C's rules to prevent loss of data with implicit casting. I don't see how D's implicit casts are a dangerous source of bugs.
> And also you shouldn't really do arithmetic operations on chars anyway, at least not with unicode and D is supposed to be a unicode language.
It turns out that for performance reasons, you definitely want to treat UTF-8 as individual code units. Autodecode taught us that the hard way.
> Upper-casing in unicode is not as simple as an addition, because the rules for doing so are language specific.
I'm painfully aware that the Unicode consortium made it impossible to do "correct" Unicode without a megabyte library.
> Even with ASCII you can't just rely on a mathematic computation, because not all characters can change case, such as symbols.
Yes, you can. I posted the code in another post in this thread. ASCII hasn't changed in my professional lifetime, and I seriously doubt it will change in yours.
> If D is to ever attract more users, then it must not surprise new users.
The only problem we've had with D chars is autodecoding, which ironically does what you propose - treat everything as Unicode code points rather than code units.
It's a great idea, but it simply does not work, and it took us years to become convinced of that.
|