On 12/10/2011 10:37 AM, Mehrdad wrote:
I just thought I'd give D another try, after having given up on it for a
while.

Lo and behold... the same old kind of problem from a year ago is still
here. :(

Simple stuff like this:

import std.algorithm;
void main() {
const arr = [1, 2, 3];
reduce!"a*b"(arr); // You'd think it'd work...
}

Results in ridiculously annoying errors like:
// algorithm.d(728): Error: can only initialize const member
_field_field_0 inside constructor

I **HIGHLY** suggest that priority be given to simple problems like
these, instead of OMG-so-cool-libraries.

It is a *library bug*. Just have a look at the source code.

It really doesn't matter if
there is an uber-awesome collections/CURL/whatever library out there,
when problems like these exist. If a 2-line piece of code needs a
workaround, then (IMO) people simply won't care about anything else
that's more complicated.

I'll post more as I find them. (I'd found plenty a few months ago, now I
just need to find them again.)
Too lazy/busy studying to post as a bug. And it feels a bit better when
I add the complaint. :P

(Sorry for being so critical but at least I tried to make it
constructive...)

Just slice the const array to get a range. The specialization for ranges does not have the bug.

import std.algorithm;
void main() {
    const arr = [1, 2, 3];
    reduce!"a*b"(arr[]);   // It works.
}

Reply via email to