/ / Qual é o nome adequado de um método zip que "gira" uma lista de listas? - programação funcional

Qual é o nome próprio de um método de zip que “gira” uma lista de listas? - programação funcional

Dada uma lista de listas, como ((a b c d) (e f g h) (i j k l) (m n o p) (q r s t)), Gostaria de escrever uma transformação em uma nova lista de listas consistindo no primeiro item de cada lista, seguido do segundo item de cada lista etc. (no meu exemplo, o resultado disso seria ((a e i m q) (b f j n r) (c g k o s) (d h l p t))).

Esta operação possui um nome distinto, além de zip? Se sim, qual é esse nome?

Respostas:

7 para resposta № 1

A melhor palavra para isso é provavelmente transpor.

Sua lista de listas pode ser vista como uma matriz, e isso é uma transposição de matriz.


6 para resposta № 2

Em Haskell, essa função é chamada transpor.


4 para resposta № 3

Para perguntas como essa, costumo recorrer ao Hoogle em busca de inspiração. Depois de resolvermos a assinatura de tipo para sua função, Hoogle nos diz que o haskell usa ambos transpor e seqüência execute essa transformação (embora você precise apertar um pouco os olhos em sequência para perceber que isso significa o mesmo para a mônada da lista).

A transposição parece melhor como uma operação específica da lista, mas a sequência faz muito sentido ao trabalhar com outras mônadas.