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 № 1A 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.