[Haskell] Manipulations de listes
Deux questions "simples".
1. j'aimerais construire couple :: [a] -> [[a]] qui me donnerait toutes les paires [x,y]. Je précise que je démarre depusi hier (ça vous le savez ... ;)), juste avec la doc.
La fonction générale pour les sous-tuples est ok:
Code:
1 2 3 4
| combinations :: Int -> [a] -> [[a]]
combinations 0 _ = [ [] ]
combinations n xs = [ y:ys | y:xs' <- tails xs
, ys <- combinations (n-1) xs'] |
Mais est-il possible de la simplifier pour ne tenir compte que de n=2 ? J'ai essayé
Code:
1 2 3
| couple :: [a] -> [[a]]
couple xs = [y:ys | y:xs' <- tails xs
, ys <- tails xs'] |
qui bien sûr ne marche pas, et même
Code:
1 2 3
| couple :: [a] -> [[a]]
couple xs = [y:ys | y:xs' <- tails xs
, ys <- head.tails xs'] |
mais ce head qui me resoudrait le problème ne fonctionne pas!
2. Une fois la fct couple ok, j'obtiendrai donc une liste [[x1,y1],[x2,y2],...], et étant donné une fonction f:Integer -> Integer -> Integer, j'aimerais l'appliquer à cette liste; c'est avec zipWith, c'est cela?
Merci pour ceux qui pourront aider un dilletante ...