2

我有一个列表,其中包含具有多个构造函数的类型的元素(例如,像这样的东西)。如何提取与特定构造函数匹配的列表元素?

我能想到的一种方法是使用列表理解。例如,给定一个包含上述示例fields类型元素的列表Field,我可以提取第一个From字段:

from = head [head f | From f <- fields]

有没有更简单的方法来做到这一点?

4

1 回答 1

1

要过滤与From构造函数匹配的列表,可以使用以下filter函数:

filter (\x -> case x of From {} -> True; _ -> False) fields

然后取head第一个元素。

head . filter (\x -> case x of From {} -> True; _ -> False) $ fields
于 2012-06-04T05:42:22.780 回答