Re: WTF does "Enforcement failed" actually mean?

2015-10-01 Thread Russel Winder via Digitalmars-d-learn
On Thu, 2015-10-01 at 08:52 +, John Colvin via Digitalmars-d-learn
wrote:
> […]
> 
> Bug report? Then it'll get fixed.

https://issues.dlang.org/show_bug.cgi?id=15133

Timer running…  ;-)

-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder



signature.asc
Description: This is a digitally signed message part


Re: WTF does "Enforcement failed" actually mean?

2015-10-01 Thread Marco Leise via Digitalmars-d-learn
Am Thu, 01 Oct 2015 08:52:43 +
schrieb John Colvin :

> On Thursday, 1 October 2015 at 07:08:00 UTC, Russel Winder wrote:
> > On Wed, 2015-09-30 at 23:35 -0700, Ali Çehreli via 
> > Digitalmars-d-learn wrote:
> >> On 09/30/2015 10:46 PM, Russel Winder via Digitalmars-d-learn 
> >> wrote:
> >> > [...]
> >> 
> >> It's coming from the following no-message enforce():
> >> 
> >>  enforce(!r.empty);
> >> 
> >> 
> >> https://github.com/D-Programming-Language/phobos/blob/master/std/algo
> >> rithm/iteration.d#L2481
> >> 
> >> You are using the no-seed version of reduce(), which uses the 
> >> first element as seed, which means that the range cannot be 
> >> empty.
> >
> > Well that explanation (*) makes it abundantly clear that the 
> > error reporting from this part of Phobos is distinctly 
> > substandard, let alone below par.
> >
> >
> > (*) Which is clear and informative!
> 
> Bug report? Then it'll get fixed.

The problem is that in out minds addition has an implicit seed
value of 0 and multiplication has 1, so a potentially empty
range doesn't immediately raise a red flag.

The correct thing to use, following this train of thought, is
http://dlang.org/phobos/std_algorithm_iteration.html#.sum
(Additionally it provides better accuracy when summing up
floating-point values.)

-- 
Marco



Re: WTF does "Enforcement failed" actually mean?

2015-10-01 Thread John Colvin via Digitalmars-d-learn

On Thursday, 1 October 2015 at 07:08:00 UTC, Russel Winder wrote:
On Wed, 2015-09-30 at 23:35 -0700, Ali Çehreli via 
Digitalmars-d-learn wrote:
On 09/30/2015 10:46 PM, Russel Winder via Digitalmars-d-learn 
wrote:

> [...]

It's coming from the following no-message enforce():

 enforce(!r.empty);


https://github.com/D-Programming-Language/phobos/blob/master/std/algo
rithm/iteration.d#L2481

You are using the no-seed version of reduce(), which uses the 
first element as seed, which means that the range cannot be 
empty.


Well that explanation (*) makes it abundantly clear that the 
error reporting from this part of Phobos is distinctly 
substandard, let alone below par.



(*) Which is clear and informative!


Bug report? Then it'll get fixed.


Re: WTF does "Enforcement failed" actually mean?

2015-10-01 Thread Russel Winder via Digitalmars-d-learn
On Wed, 2015-09-30 at 23:35 -0700, Ali Çehreli via Digitalmars-d-learn
wrote:
> On 09/30/2015 10:46 PM, Russel Winder via Digitalmars-d-learn wrote:
> > I have the code:
> > 
> > reduce!"a+b"(x)
> > 
> > where x is a int[] and I get an exception "Enforcement failed" at
> > run
> > time. This gives me enough information to say ¿que?
> > 
> 
> It's coming from the following no-message enforce():
> 
>  enforce(!r.empty);
> 
>  
> https://github.com/D-Programming-Language/phobos/blob/master/std/algo
> rithm/iteration.d#L2481
> 
> You are using the no-seed version of reduce(), which uses the first 
> element as seed, which means that the range cannot be empty.

Well that explanation (*) makes it abundantly clear that the error
reporting from this part of Phobos is distinctly substandard, let alone
below par.


(*) Which is clear and informative!
-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder



signature.asc
Description: This is a digitally signed message part


Re: WTF does "Enforcement failed" actually mean?

2015-09-30 Thread Ali Çehreli via Digitalmars-d-learn

On 09/30/2015 10:46 PM, Russel Winder via Digitalmars-d-learn wrote:

I have the code:

reduce!"a+b"(x)

where x is a int[] and I get an exception "Enforcement failed" at run
time. This gives me enough information to say ¿que?



It's coming from the following no-message enforce():

enforce(!r.empty);


https://github.com/D-Programming-Language/phobos/blob/master/std/algorithm/iteration.d#L2481

You are using the no-seed version of reduce(), which uses the first 
element as seed, which means that the range cannot be empty.


Ali



WTF does "Enforcement failed" actually mean?

2015-09-30 Thread Russel Winder via Digitalmars-d-learn
I have the code:

reduce!"a+b"(x)

where x is a int[] and I get an exception "Enforcement failed" at run
time. This gives me enough information to say ¿que?

-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder



signature.asc
Description: This is a digitally signed message part