/ / Яке власне ім'я методу, схожого на zip, яке "перевертає" список списків? - функціонально-програмування

Яка властивість zip-типу методу, який "обертає" список списків? - функціональне програмування

Дано перелік списків, наприклад ((a b c d) (e f g h) (i j k l) (m n o p) (q r s t)), Я хотів би написати перетворення в новий список списків, що складаються з першого елемента з кожного списку, після другого пункту з кожного списку тощо (у нашому прикладі результатом цього буде ((a e i m q) (b f j n r) (c g k o s) (d h l p t)))

Чи має ця операція окреме ім'я, окрім zip? Якщо так, то яке це ім'я?

Відповіді:

7 для відповіді № 1

Найкраще слово для нього є транспортувати.

Ваш список списків можна розглядати як матрицю, і це матрична транспозиція.


6 для відповіді № 2

У Haskell ця функція викликається транспортувати.


4 для відповіді № 3

Для таких питань, як правило, я звертаюся до Hoogle для натхнення. Після сортування підпису типу для вашої функції, Hoogle говорить нам, що haskell використовує обидва транспортувати і послідовність виконайте це перетворення (хоча вам доведеться трохи прищуритися в послідовності, щоб помітити, що це означає те саме для списку монади).

Транспонування виглядає краще як перелік конкретної операції, але послідовність робить багато сенсу при роботі з іншими монадами.