过滤代数数据类型列表

问题描述 投票:-2回答:2

我想在haskell中过滤一个代数数据类型列表。因此,例如:

data Both = Foo Int Int
            | Bar Int

如果我有此数据类型,我想过滤掉Foos。此函数应仅返回Foos:

sortFoos :: [Both] -> [Both]

我只是不知道该怎么做。有人有解决方案吗?

haskell algebraic-data-types
2个回答
1
投票

您可以使用模式匹配来定义过滤功能:

skipFoo (Foo _ _) = False
skipFoo _ = True

然后将其传递给filter

filter

0
投票

使用列表理解:

filter skipFoo [Foo 1 2, Bar 3]  -- returns [Bar 3]
© www.soinside.com 2019 - 2024. All rights reserved.