Better idea for double list comprehension?

bearophile bearophileHUGS at lycos.com
Sat Jan 18 14:33:54 PST 2014


CJS:

> Unfortunately my current best attemp doesn't compile:

What errors are you seeing?


> auto cross(R1, R2)(in R1 A, in R2 B){

Better to add a space before the open brace.
Also you may want to remove "in" if you want to use cross() on 
lazy ranges.


>     return cartesianProduct(A,B).map!(ab => ab[].text).array;

And a space after the comma.


>     string letters = "ABCDEFGHI";
>     string digits = "123456789";

And a enum/const/immutable for variables that don't need to 
change.


>         unitlist ~= cross(rows, to!string(c));

to!string(c)   ===>   c.text


>         units[s] = filter!(x=>any!(y=>(s==y)))(unitlist);

Better to use UFCS here, don't forget spaces around operators:

units[s] = unitlist.filter!(x => any!(y => (s == y)));

And filter returns a lazy range, so perhaps that doesn't work.


> For the associative arrays I'm unsure I have the correct calls, 
> but they looked reasonable. Any suggestions?

Phobos needs a very handy set().

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list