Un problema común que tengo en Haskell es extraer todos los términos en una lista que pertenece a un constructor de datos específico y me pregunto si hay formas mejores que las camino lo estoy haciendo en este momento.Cómo extraer términos de un constructor de datos específico de una lista en Haskell
Digamos que tienes
data Foo = Bar | Goo
, la lista
foos = [Bar, Goo, Bar, Bar, Goo]
y desea extraer todos los Goo
s de foos
. En este momento usualmente hago algo como
goos = [Goo | Goo <- foos]
y todo está bien. El problema es cuando Goo
tiene un montón de campos y me veo obligado a escribir algo como
goos = [Goo a b c d e f | Goo a b c d e f <- foos]
que está lejos de ser ideal. ¿Cómo manejas generalmente este problema?
Pero OP quiere algo similar a '[Just x | Solo x <- ls] ', no' catMaybes' o 'derechos'. – kennytm
Está bien, la pregunta está en dos partes: si la lista de comprensiones está bien, y en segundo lugar, qué forma de coincidencia de patrones. Lo aclararé –