On Wednesday, February 08, 2012 07:39:44 H. S. Teoh wrote: > On Wed, Feb 08, 2012 at 09:56:17AM -0500, Steven Schveighoffer wrote: > [...] > > > D will continue to trip over itself and fall into newbies until it > > makes a decision to make strings not also be arrays. > > [...] > > I disagree. D will continue to trip over itself until it treats all > arrays equally, that is, if reverse() works on ubyte[], then it should > also work on char[]. There's nothing wrong with treating a string as an > array. After all, "string" means "string of characters", i.e., an array.
Except that char[] is _not_ an array of characters. It's an array of code units. There is a _big_ difference. Not even dchar[] is an array of characters. It's both an array of code units and an array of code points, but not even that quite gets you characters (though at this point, Phobos pretty much treats a code point as if it were a character). If you want a character, you need a grapheme (which could be multiple code points). _That_ is where the problem comes in. You can definitely do array operations on strings. In fact, it can be very desirable to do so if you want to process strings efficiently. But if you treat them like you would ubyte[], you're in for a heap of trouble thanks to how unicode works. - Jonathan M Davis