www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - transposed with enforceNotJagged not throwing?

reply berni <someone somemail.de> writes:
I expect this small program to throw an Exception:

 import std.stdio;
 import std.range;

 void main()
 {
     auto a = [[1,2],
               [4,5,3]];
 
     a.transposed!(TransverseOptions.enforceNotJagged).writeln;
 }
But it just outputs:
 [[1, 4], [2, 5], [3]]
Is it a bug or is it me who's doing something wrong?
Sep 21 2018
parent reply Vladimir Panteleev <thecybershadow.lists gmail.com> writes:
On Saturday, 22 September 2018 at 06:16:41 UTC, berni wrote:
 Is it a bug or is it me who's doing something wrong?
Looking at the implementation, it looks like enforceNotJagged was just never implemented for transposed (only transversed).
Sep 22 2018
parent reply Steven Schveighoffer <schveiguy gmail.com> writes:
On 9/22/18 4:10 AM, Vladimir Panteleev wrote:
 On Saturday, 22 September 2018 at 06:16:41 UTC, berni wrote:
 Is it a bug or is it me who's doing something wrong?
Looking at the implementation, it looks like enforceNotJagged was just never implemented for transposed (only transversed).
It was suggested when transposed was fixed to include opIndex, but never implemented. https://github.com/dlang/phobos/pull/5805#discussion_r148251621 -Steve
Sep 22 2018
parent reply berni <someone somemail.de> writes:
On Saturday, 22 September 2018 at 12:52:45 UTC, Steven 
Schveighoffer wrote:
 It was suggested when transposed was fixed to include opIndex, 
 but never implemented.
Maybe I'm too naive, but isn't it easy to implement it just the same way, it is done with transverse? That is: putting the "static if"-part from the constructor there in the constructor of Transposed?
Sep 22 2018
parent Steven Schveighoffer <schveiguy gmail.com> writes:
On 9/22/18 4:37 PM, berni wrote:
 On Saturday, 22 September 2018 at 12:52:45 UTC, Steven Schveighoffer wrote:
 It was suggested when transposed was fixed to include opIndex, but 
 never implemented.
Maybe I'm too naive, but isn't it easy to implement it just the same way, it is done with transverse? That is: putting the "static if"-part from the constructor there in the constructor of Transposed?
You're not too naive, it would be easy (I think I said as much here: https://github.com/dlang/phobos/pull/5805#issuecomment-341234846). It just wasn't done in that pull (which was focused on a different problem). Please feel free to submit a fix! -Steve
Sep 24 2018