Un problème courant que j'ai eu dans Haskell est d'extraire tous les termes d'une liste appartenant à un constructeur de données spécifique et je me demande s'il existe de meilleurs moyens que le comme je le fais en ce moment.Comment extraire des termes de constructeur de données spécifiques à partir d'une liste dans Haskell
Disons que vous avez
data Foo = Bar | Goo
, la liste
foos = [Bar, Goo, Bar, Bar, Goo]
et souhaitez extraire tous les Goo
s de foos
. En ce moment je fais quelque chose comme
goos = [Goo | Goo <- foos]
et tout va bien. Le problème est quand Goo
a obtenu un tas de champs et je suis obligé d'écrire quelque chose comme
goos = [Goo a b c d e f | Goo a b c d e f <- foos]
qui est loin d'être idéale. Comment gérez-vous habituellement ce problème?
Mais OP veut quelque chose de similaire à '[Just x | Juste x <- ls] ', pas' catMaybes' ou 'rights'. – kennytm
Très bien, la question est en deux parties: si les compréhensions de liste sont correctes, et deuxièmement, quelle forme de correspondance de modèle. Je vais clarifier. –