Transpose of jagged array
pzp1997 opened this issue · 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...
- We could wrap the whole thing in a Maybe which fails on different-length lists.
- We could wrap individual elements in Maybe, which would be a bit awkward to deal with.
- 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 could there be separate implementations? For example,
transpose
, which follows number 3 andtransposeJagged
orjaggedTranspose
, which follows number 2
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.