list-extra icon indicating copy to clipboard operation
list-extra copied to clipboard

Transpose of jagged array

Open pzp1997 opened this issue 8 years ago • 2 comments

We need to decide on an appropriate way of handling non-rectangular arrays. As @gilberkennen wrote in #83, (some of) the possible options are...

  1. We could wrap the whole thing in a Maybe which fails on different-length lists.
  2. We could wrap individual elements in Maybe, which would be a bit awkward to deal with.
  3. We could truncate the matrix to the shortest list size, which seems a bit surprising, but less surprising than the current functionality and it gives us the nicer type that wouldn't need to change.

As of #83, the behavior aligns with the third option but the implementation can be easily adapted to any of them. The option that I am now leaning towards is to just say in the docs that the output for non-rectangular input is unspecified and can change at any time (although I can definitely see many arguments against that course of action related to maintainability). I am also strongly considering option number 1.

pzp1997 avatar Dec 18 '17 20:12 pzp1997

@pzp1997 could there be separate implementations? For example,

  • transpose, which follows number 3 and
  • transposeJagged or jaggedTranspose, which follows number 2

tuxagon avatar Mar 02 '18 03:03 tuxagon

I threw together a simple example for jagged to get a feel for what it is like to use it. It was my first naive approach, so I'm confident there is something that could be done to improve it.

https://ellie-app.com/dsbC7m3cKa1/0

tuxagon avatar Mar 02 '18 04:03 tuxagon