On 2012-07-09 22:16, Andrei Alexandrescu wrote:
So foo is a range of strings, because each element of it is a string.
Then you want to chain a range of strings with a string, which is a
range of dchar. That doesn't work, and I agree the error message should
be more informative.
Is that by design or something that can be fixed?
To fix the example, write
auto bar = foo.chain(["bar"]);
I think that's an ugly workaround.
Another example:
auto str = ["foo", "bar"].map!(x => x);
auto f = str.sort();
Results in:
http://pastebin.com/BeePWQk9
The first error message is at clear as it goes:
Error: r[i2] is not an lvalue
"Clear as it goes" WTF? Are you nuts? It's an insanly bad error message,
I have no "r" in my code. Is it too much to ask to be able to sort a range?
This just proves that std.algorithm is complicated to use. It's very
unintuitive.
What I really want is this, but ranges doesn't work like that:
Foo f = Foo();
Foo[] foos = [f];
string[] = foos.map!(x => "foo");
string[] bar = foo ~= "foo";
And:
string[] str = ["foo", "bar"].map!(x => x);
string[] f = str.sort();
--
/Jacob Carlborg