[Issue 9593] Optional type-free printing of a std.typecons.Tuple

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Thu Jan 8 06:12:18 PST 2015


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

--- Comment #2 from bearophile_hugs at eml.cc ---
Sometimes the output is so much noisy that it's unreadable:

void main() {
    import std.stdio: writeln;
    import std.algorithm: cartesianProduct;
    import std.range: enumerate;
    auto a = [10, 20];
    cartesianProduct(a.enumerate, a.enumerate)
    .writeln;
}


Output:

[Tuple!(Tuple!(uint, "index", int, "value"), Tuple!(uint, "index", int,
"value"))(Tuple!(uint, "index", int, "value")(0, 10), Tuple!(uint, "index",
int, "value")(0, 10)), Tuple!(Tuple!(uint, "index", int, "value"), Tuple!(uint,
"index", int, "value"))(Tuple!(uint, "index", int, "value")(0, 10),
Tuple!(uint, "index", int, "value")(1, 20)), Tuple!(Tuple!(uint, "index", int,
"value"), Tuple!(uint, "index", int, "value"))(Tuple!(uint, "index", int,
"value")(1, 20), Tuple!(uint, "index", int, "value")(0, 10)),
Tuple!(Tuple!(uint, "index", int, "value"), Tuple!(uint, "index", int,
"value"))(Tuple!(uint, "index", int, "value")(1, 20), Tuple!(uint, "index",
int, "value")(1, 20))]


A similar Python program:

from itertools import product
a = [10, 20]
print list(product(enumerate(a), enumerate(a)))


Prints a readable output:

[((0, 10), (0, 10)), ((0, 10), (1, 20)), ((1, 20), (0, 10)), ((1, 20), (1,
20))]

--


More information about the Digitalmars-d-bugs mailing list