2011-05-28 33 views
-1

可能重复:
Return a list of Integer values that is not within a range of numbers in an existing list:是否有预定义的haskell函数将列表中的元素提取到新列表中?

我期待采取如下:

[Vacant, Engaged, Vacant, Vacant, Engaged, Vacant, Vacant, Vacant, Vacant] 

,并从上面的列表仅返回Vacant值的列表。

(即[Vacant, Vacant, Vacant, Vacant, Vacant, Vacant, Vacant])。

是否有任何预定义的haskell函数来执行此操作?

(NB VacantEngaged是数据类型)

+3

'Vacant'和'Engaged'不是数据类型,它们是数据类型的构造函数。 – augustss 2011-05-28 21:38:01

+0

您确定除了两个不同的值构造函数('数据Thing =空置|被聘用')之外没有任何信息吗?否则,您将使用布尔值。 – Tom 2011-05-28 21:47:48

+0

@Antal S-Z它不是一个确切的副本。他们是两个完全不同的问题,涉及到相同的概念。 – maclunian 2011-05-28 21:48:29

回答

3

这就是所谓的filter

filter (== Vacant) 

另外,使用列表理解:

[x | x <- lst, x == Vacant] 
在这种情况下

(稍长,但在其他一些情况下更方便。)

+6

或'[x | x @空置< - lst]'。 – augustss 2011-05-28 21:38:47