std.algorithm.remove and principle of least astonishment

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Nov 22 16:45:43 PST 2010


On 11/22/10 5:59 PM, foobar wrote:
> Canonical example: DNA.
> I shouldn't need to write a special function to print it since it IS a string.
> I shouldn't need to cast it in order to do operations on it like sort, find, etc.

I think it's best to encode DNA strings as sequences of ubyte. UTF 
routines will work slower on them than functions for ubyte.

> D's [w|D|]char types make no sense since they are NOT characters and the concept doesn't fit for unicode since as someone else wrote, there are different levels of abstractions in unicode (copde point, code unit, grapheme).
> Naming matters and having a cat called dog (char is actually code unit) is a source of bugs.

I think the names are fine. It doesn't take much learning to understand 
that char, wchar, and dchar are UTF-8, UTF-16, and UTF-32 code units 
respectively. I mean it would be odd if they were something else.


Andrei


More information about the Digitalmars-d mailing list