Un problema comune che ho ottenuto in Haskell è quello di estrarre tutti i termini in un elenco appartenente a un costruttore di dati specifico e mi chiedo se ci sono modi migliori rispetto al come lo sto facendo al momentoCome estrarre i termini del costruttore di dati specifici da un elenco in Haskell
Diciamo che hai
data Foo = Bar | Goo
, la lista
foos = [Bar, Goo, Bar, Bar, Goo]
e desidera estrarre tutti Goo
s da foos
. Al momento di solito faccio qualcosa come
goos = [Goo | Goo <- foos]
e tutto va bene. Il problema è quando Goo
ha ottenuto una serie di campi e sono costretto a scrivere qualcosa di simile
goos = [Goo a b c d e f | Goo a b c d e f <- foos]
che è ben lungi dall'essere ideale. Di solito come gestisci questo problema?
Ma OP vuole qualcosa di simile a '[Solo x | Solo x <- ls] ', non' catMaybes' o 'rights'. – kennytm
Va bene, la domanda è in due parti: se la comprensione delle liste è ok, e in secondo luogo, quale forma di abbinamento dei modelli. Chiarirò –