Re: Human stupidity or is this a regression?

2013-12-25 Thread bearophile

Lionello Lunesu:

I could have sworn this used to work. Is my memory failing me, 
or was this a deliberate change at some point? Perhaps a 
regression?


It's not a regression, it's a locked-in design mistake. Write it 
like this and try again:


foreach (dchar d; "你好")

Bye,
bearophile


Re: Human stupidity or is this a regression?

2013-12-25 Thread Lionello Lunesu

On 12/26/13, 11:58, bearophile wrote:

Lionello Lunesu:


I could have sworn this used to work. Is my memory failing me, or was
this a deliberate change at some point? Perhaps a regression?


It's not a regression, it's a locked-in design mistake. Write it like
this and try again:

foreach (dchar d; "你好")

Bye,
bearophile


Yeah, that's what I ended up doing. But D being D, the default should be 
safe and correct.


I feel we could take this breaking change since it would not silently 
change the code to do something else. You'll get prompted and we could 
special case the error message to give a meaningful hint.


L


Re: Human stupidity or is this a regression?

2013-12-26 Thread bearophile

Lionello Lunesu:

Yeah, that's what I ended up doing. But D being D, the default 
should be safe and correct.


I feel we could take this breaking change since it would not 
silently change the code to do something else.


You have to explain such things in the main D newsgroup. D.learn 
newsgroup is not fit for such requests.


Bye,
bearophile


Re: Human stupidity or is this a regression?

2013-12-26 Thread Andrej Mitrovic
On 12/26/13, bearophile  wrote:
> You have to explain such things in the main D newsgroup. D.learn
> newsgroup is not fit for such requests.

There have already been a million of these threads, it's worth doing a
search as there's probably lots of answers there.


Re: Human stupidity or is this a regression?

2013-12-26 Thread Vladimir Panteleev
On Thursday, 26 December 2013 at 05:39:26 UTC, Lionello Lunesu 
wrote:

On 12/26/13, 11:58, bearophile wrote:

Lionello Lunesu:

I could have sworn this used to work. Is my memory failing 
me, or was

this a deliberate change at some point? Perhaps a regression?


It's not a regression, it's a locked-in design mistake. Write 
it like

this and try again:

foreach (dchar d; "你好")

Bye,
bearophile


Yeah, that's what I ended up doing. But D being D, the default 
should be safe and correct.


It is impossible for it to be "correct", unless with a very 
specific definition of "correct" which makes sense for some 
languages/locales and not others. As a challenge, try to define a 
"foreach" semantic that works "correctly" with the OP's code for 
Unicode composite characters, or Hebrew.


Re: Human stupidity or is this a regression?

2013-12-26 Thread H. S. Teoh
On Thu, Dec 26, 2013 at 09:38:02PM +, Vladimir Panteleev wrote:
> On Thursday, 26 December 2013 at 05:39:26 UTC, Lionello Lunesu
> wrote:
> >On 12/26/13, 11:58, bearophile wrote:
> >>Lionello Lunesu:
> >>
> >>>I could have sworn this used to work. Is my memory failing me, or
> >>>was this a deliberate change at some point? Perhaps a regression?
> >>
> >>It's not a regression, it's a locked-in design mistake. Write it
> >>like this and try again:
> >>
> >>foreach (dchar d; "你好")
> >>
> >>Bye,
> >>bearophile
> >
> >Yeah, that's what I ended up doing. But D being D, the default
> >should be safe and correct.
> 
> It is impossible for it to be "correct", unless with a very specific
> definition of "correct" which makes sense for some languages/locales
> and not others. As a challenge, try to define a "foreach" semantic
> that works "correctly" with the OP's code for Unicode composite
> characters, or Hebrew.

To be truly "correct" in the intuitive sense, use std.uni.byGrapheme.
(Yes it's slow, but that's the price you pay for intuitive correctness.)


T

-- 
It always amuses me that Windows has a Safe Mode during bootup. Does that mean 
that Windows is normally unsafe?