Ihre Frage ist nicht sehr sicher, wie die Tupel in eine Liste umgewandelt werden sollen. Ich nehme an, dass Sie möchten, dass sie flatend sind - zum Beispiel, [(1,2),(3,4)]
sollte [1,2,3,4]
werden.
Diese Übersetzung ist nur möglich, wenn die beiden Elemente Ihres Tupels vom selben Typ sind, als Sie etwas tun können:
%Vor% Im allgemeinen Fall ist eine solche Übersetzung unmöglich. Eine Sache, die ich mir vorstellen könnte, um das Unmögliche möglich zu machen, ist die Verwendung von Either
, um die zwei verschiedenen Typen zusammenzufassen:
Die Objektiv -Bibliothek verarbeitet diesen und ähnliche Fälle konsistent.
%Vor%Um aus einer Liste von Listen zu konvertieren:
%Vor%Zusatz bearbeiten:
traverse
arbeitet mit Traversable
traverse
funktioniert mit jedem Datentyp, der eine Traversable
-Instanz hat, zum Beispiel Bäume.
Dies kann auch durch die homogene Tupel-Bibliothek erreicht werden (Disclaimer: welches ich der Autor bin von). Es definiert Wrapper für Tupel, die Instanzen von Traversable
(und andere wie Applicative
und Monad
) bilden. Ein Tupel kann also in eine Liste von toList . Tuple2
konvertiert werden (wobei toList stammt von Data.Foldable
) und
Sie können es auch für andere Tupel verwenden, zum Beispiel concatMap (toList . Tuple5)
etc.
Tags und Links haskell