On Tuesday, 23 October 2012 at 17:36:53 UTC, Simen Kjaeraas wrote:
On 2012-10-23, 19:21, mist wrote:

Hm, and all phobos functions should operate on narrow strings as if they where not random-acessible? I am thinking about something like commonPrefix from std.algorithm, which operates on code points for strings.

Preferably, yes. If there are performance (or other) benefits from operating on code units, and it's just as safe, then operating on code
units is ok.

Probably I don't undertsand it fully, but D approach has always been "safe first, fast with some additional syntax". Back to commonPrefix and take:

==========================
import std.stdio, std.traits, std.algorithm, std.range;

void main()
{
        auto beer = "Пиво";
        auto r1 = beer.take(2);
        auto pony = "Пони";
        auto r2 = commonPrefix(beer, pony);
        writeln(r1);
        writeln(r2);
}
==========================

First one returns 2 symbols. Second one - 3 code points and broken string. There is no way such incosistency by-default in standard library is understandable by a newbie.

Reply via email to