/ / Jaka jest poprawna nazwa metody typu zip, która „przestawia” listę list? - programowanie funkcjonalne

Jaka jest właściwa nazwa podobnej do zip metody, która "przestawia" listę list? - programowanie funkcjonalne

Podano listę list, takich jak ((a b c d) (e f g h) (i j k l) (m n o p) (q r s t)), Chciałbym napisać transformację do nowej listy list składającej się z pierwszego elementu z każdej listy, a następnie drugiego elementu z każdej listy itp. (W moim przykładzie wynikiem byłoby ((a e i m q) (b f j n r) (c g k o s) (d h l p t))).

Czy ta operacja ma inną nazwę niż zip? Jeśli tak, to jak się nazywa?

Odpowiedzi:

7 dla odpowiedzi № 1

Prawdopodobnie najlepsze na to słowo transponować.

Twoja lista list może być uważana za macierz, a jest to transpozycja macierzy.


6 dla odpowiedzi nr 2

W Haskell ta funkcja jest wywoływana transponować.


4 dla odpowiedzi nr 3

W przypadku takich pytań zwykle szukam inspiracji w Hoogle. Po uporządkowaniu podpisu typu dla Twojej funkcji, Hoogle mówi nam, że haskell korzysta z obu transponować i sekwencja wykonaj tę transformację (choć musisz trochę zezować, by zauważyć, że to samo dotyczy monady listy).

Transpozycja wydaje się lepsza jako operacja specyficzna dla listy, ale sekwencja ma wiele sensu podczas pracy z innymi monadami.