如何在haskell中按类型过滤列表

时间:2015-03-14 07:00:55

标签: haskell

我有一个列表,其中包含某些Node类型的元素,可能是UNode或LNode或RNode

[
    UNode("a"), LNode("b"), RNode("c")
]

如何按类型(例如UNode)

过滤它

2 个答案:

答案 0 :(得分:9)

列表推导在这里似乎很有用:

[ x | x@(Unode _) <- list ]

答案 1 :(得分:4)

不幸的是,就我所知,最简单的方法也是唯一的方法:匹配。

let isUNode node =
    case node of
        UNode _ -> True
        _ -> False
in filter isUNode