我正在尝试确定是否可以在 Haskell 集合理解中进行模式匹配。我有一个包含元组或嵌套列表和元组的列表列表;
例如
[[(1,("A",1)), (2,("B",1))], [(0,("A",1)), (3,("B",2)), (2,("C",1))]]
我想丢弃包含“A”的元组并对其他元组进行任意计算。
我是这样想的:
pack(xs:xss) = [package x | x <- xs, x /= (1,("A", 1))] : (pack xss)
pack(_) = []
package x = case x of
(i, ("B", j)) -> (i + j, ("B", j * i))
(i, ("C", j)) -> (i * j, ("C", j + i))
(otherwise) -> x
以下情况可能允许使用通配符:
x /= (1,("A", 1))
如:
x /= (_,("A", _))
值得注意的是,嵌套元组中的数字将始终是 int 类型,不确定这是否有帮助......
我环顾四周,但看不到这是否可能,似乎过滤是一个更好的选择,如下所述;但是我们正在过滤未知数。
我的问题是从更大的工作/功能中提取的一个抽象示例,但希望我在这里抓住了问题的本质。我愿意接受其他建议。