www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 7624] New: std.typecons.Tuple slicing

http://d.puremagic.com/issues/show_bug.cgi?id=7624

           Summary: std.typecons.Tuple slicing
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: bearophile_hugs eml.cc



std.typecons.Tuple supports both a "slice" method and normal array slicing
syntax:


import std.stdio, std.typecons;
void main() {
    Tuple!(int,float,string,ubyte) t4;
    t4[2] = "XXX";
    t4[3] = 99;
    writeln(t4);
    writeln(typeid(typeof(t4)), "\n");

    auto t2a = t4.slice!(1, 3);
    writeln(t2a);
    writeln(typeid(typeof(t2a)), "\n");

    auto t2b = t4[1 .. 3];
    writeln(t2b);
    writeln(typeid(typeof(t2b)), "\n");
}


Outout with DMD 2.059head:

Tuple!(int,float,string,ubyte)(0, nan, "XXX", 99)
std.typecons.Tuple!(int,float,string,ubyte).Tuple

Tuple!(float,string)(nan, "XXX")
std.typecons.Tuple!(float,string).Tuple

nanXXX
(float,immutable(char)[])


But the natural syntax, using [1..3], returns a typetuple. Having two different
kinds of tuples in a language is confusing, but slicing a kind tuple and see as
a result the other kind of tuple is a bit too much confusing.

Is it possible to modify D/Phobos to make  t4[1..3]   return a
std.typecons.Tuple (and then deprecate the "slice" method)?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 01 2012