2
我有一个列表,其中包含具有多个构造函数的类型的元素(例如this)。我如何提取匹配特定构造函数的列表元素?列表元素上的模式匹配
我能弄清楚的一个方法是使用列表理解。例如。给定一个列表fields
从上面的例子Field
类型的元素,我可以提取第一From
场:
from = head [head f | From f <- fields]
有没有一种简单的方法来做到这一点?
我有一个列表,其中包含具有多个构造函数的类型的元素(例如this)。我如何提取匹配特定构造函数的列表元素?列表元素上的模式匹配
我能弄清楚的一个方法是使用列表理解。例如。给定一个列表fields
从上面的例子Field
类型的元素,我可以提取第一From
场:
from = head [head f | From f <- fields]
有没有一种简单的方法来做到这一点?
要筛选匹配From
构造函数列表中,您可以使用filter
功能:
filter (\x -> case x of From {} -> True; _ -> False) fields
,然后采取head
采取的第一个元素。
head . filter (\x -> case x of From {} -> True; _ -> False) $ fields
我没有看到,为什么你不能只匹配(从f :: _)?或者使用let f = match .. –