elm-community / list-extra

Convenience functions for working with List.
http://package.elm-lang.org/packages/elm-community/list-extra/latest
MIT License
136 stars 59 forks source link

Transpose of jagged array #86

Open pzp1997 opened 6 years ago

pzp1997 commented 6 years ago

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.

tuxagon commented 6 years ago

@pzp1997 could there be separate implementations? For example,

tuxagon commented 6 years ago

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