我有一个列表,其中包含具有多个构造函数的类型的元素(例如this)。如何提取与特定构造函数匹配的列表元素?
我能想到的一种方法是使用列表理解。例如。从上面的示例中给出了一个列表fields
,其中包含Field
类型的元素,我可以提取第一个From
字段:
from = head [head f | From f <- fields]
有更简单的方法吗?
答案 0 :(得分:1)
要过滤与From
构造函数匹配的列表,您可以使用filter
函数:
filter (\x -> case x of From {} -> True; _ -> False) fields
然后取head
取第一个元素。
head . filter (\x -> case x of From {} -> True; _ -> False) $ fields