J'essaye d'implémenter une fonction où j'ai deux listes, la première est de n'importe quel type et la seconde est une booléenne, et je veux qu'elle retourne seulement la première liste si elle est égal à vrai. Par exemple:Comparer deux listes avec correspondance de modèle dans Haskell
pickIt [1, 2, 3] [True, False, True] returns [1, 3]
Voici mon code:
pickIt :: [a] -> Bool -> [a]
pickIt (x:xs) (y:ys) = (x, y) : pickIt xs ys
pickIt _ _ = []
Je pense que mon type est mal, mais je suis complètement perplexe sur la façon d'aborder ce sujet. Toute aide, orientation, ou un lien pour aller dans la bonne direction serait utile.
Vous devez tester si 'y' est vrai: si c'est le cas, vous renvoyez' x' suivi de la liste donnée par l'appel récursif; sinon, vous revenez juste la liste donnée par l'appel récursif. – chi
'pickIt x y = [a | (a, b) <- zip x y, b] :: [a] -> [Bool] -> [a] ' – BlackCap