Общей проблемой, которую я получил в Haskell, является извлечение всех терминов в списке, принадлежащем конкретному конструктору данных, и мне интересно, есть ли какие-то лучшие способы, чем то, как я это делаю в данный момент.
Скажем, вы получили
data Foo = Bar | Goo
список
foos = [Bar, Goo, Bar, Bar, Goo]
и хотите извлечь все Goo
из foos
. На данный момент я обычно делаю что-то вроде
goos = [Goo | Goo <- foos]
и все хорошо. Проблема в том, когда Goo
получил кучу полей, и я вынужден написать что-то вроде
goos = [Goo a b c d e f | Goo a b c d e f <- foos]
который далеко не идеален. Как обычно вы справляетесь с этой проблемой?