2014-07-09 4 views
1

J'ai une fonction qui a été écrite en compréhension de liste. En tant qu'apprentissage, j'ai décidé d'essayer de convertir cette fonction en une application fonctionnelle en utilisant la carte, le zip, le pli, etc. J'ai beaucoup de mal à convertir celui-ci en particulier.Transformer la compréhension de liste en application fonctionnelle

Cela peut sembler déraisonnable pour ce qu'il fait, mais cela fait partie d'une plus grande fonction et je veux que cette pièce fonctionne en premier.

combination :: Int -> [a] -> [([a],[a])] 
combination 0 xs  = [([],xs)] 
combination n (x:xs) = [ (x:ys,zs) | (ys,zs) <- combination (n-1) xs ] 

Répondre

2

Il est juste un map:

combination :: Int -> [a] -> [([a],[a])] 
combination 0 xs  = [([],xs)] 
combination n (x:xs) = map (\(ys, zs) -> (x:ys,zs)) (combination (n-1) xs) 
+0

Wow, je pense que j'étais vraiment plus compliquer en essayant de se débarrasser du premier match de modèle de 'combinaison 0 xs = [([], xs)] '. Merci beaucoup pour la bonne réponse. – acher

Questions connexes