Haskell Liste des tuples à lister?
Est-il possible de convertir une liste de tuples [(Int,Int)]
comme une méthode générique qui valide pour toute la taille de l'image ? .. j'ai vu dans différentes questions thats ce n'est pas possible de façon générique
exemple :
type X = [(Int,Int)]
func :: X -> [Int]
source d'informationauteur Sudantha
Vous devez vous connecter pour publier un commentaire.
Votre question n'est pas très certain de la façon dont les tuples devrait être converti en une liste. Je suppose que vous voulez les flattend - par exemple,
[(1,2),(3,4)]
devrait devenir[1,2,3,4]
.Cette traduction n'est possible que si les deux éléments de votre tuple sont du même type, que vous pouvez faire quelque chose comme ceci:
Dans le cas général, une telle traduction est impossible. Une chose que j'ai pu imaginer pour rendre l'impossible possible est d'utiliser
Either
pour envelopper les deux types différents:La objectif bibliothèque gère ce type de cas de manière cohérente.
Pour convertir à partir d'une liste de listes:
plus edit:
traverse
fonctionne avec Traversabletraverse
fonctionne avec n'importe quel type de données qui a unTraversable
par exemple les arbres.Vous pouvez également utiliser une fois et éviter de récursion explicite:
Ou:
(Pour les éléments de même type)
Cela peut aussi être obtenu par le homogène de n-uplets de la bibliothèque (disclaimer: je suis l'auteur de l'). Il définit des wrappers pour les tuples qui les rendent instances de
Traversable
(et d'autres commeApplicative
etMonad
). Donc un n-uplet peut être converti en une liste partoList . Tuple2
(où toList est deData.Foldable
) etVous pouvez également l'utiliser pour d'autres tuples, par exemple
concatMap (toList . Tuple5)
etc.