我想在haskell中过滤一个代数数据类型列表。因此,例如:
data Both = Foo Int Int | Bar Int
如果我有此数据类型,我想过滤掉Foos。此函数应仅返回Foos:
sortFoos :: [Both] -> [Both]
我只是不知道该怎么做。有人有解决方案吗?
您可以使用模式匹配来定义过滤功能:
skipFoo (Foo _ _) = False skipFoo _ = True
然后将其传递给filter:
filter
使用列表理解:
filter skipFoo [Foo 1 2, Bar 3] -- returns [Bar 3]