Vzhľadom na zoznam zoznamov, ako napr ((a b c d) (e f g h) (i j k l) (m n o p) (q r s t))
, I "d chcel by som napísať transformáciu na nový zoznam zoznamov skladajúcich sa z prvej položky z každého zoznamu, nasledoval druhú položku z každého zoznamu atď. (V mojom príklade by to malo za následok ((a e i m q) (b f j n r) (c g k o s) (d h l p t))
).
Má táto operácia odlišný názov, okrem zip
? Ak áno, aké je to meno?
odpovede:
7 pre odpoveď č. 1Je to asi najlepšie slovo transponovať.
Váš zoznam zoznamov možno považovať za maticu, čo je maticová transpozícia.
6 pre odpoveď č. 2
Táto funkcia sa nazýva Haskell transponovať.
4 pre odpoveď č. 3
Pre podobné otázky sa zvyčajne obraciam na spoločnosť Hoogle kvôli inšpirácii. Akonáhle sme rozdelili typ podpisu pre vašu funkciu, Hoogle hovorí, že haskell používa oboje transponovať a sekvencie vykonať túto transformáciu (aj keď budete musieť trochu šilhať, aby ste si všimli, že to znamená to isté pre zoznam monad).
Transpozícia sa zdá byť lepšia ako konkrétna operácia zoznamu, ale sekvencia má veľký význam pri práci s inými monádami.