Haskell 嵌套列表中的“元素”

Haskell `elem` in nested list

我想检查嵌套列表中的元素。

我已经尝试了几种方法,但我总是会得到错误的结果或一些错误。

[X] `elem` [[X,X,X],[O,O,O]]

returns 错误但应该是正确的

X `elem` [[X,X,X],[O,O,O]]

抛出错误,无法匹配类型。

我是不是漏掉了什么?

列表的元素是子列表,列表中没有[X]个子列表

您可以检查子列表的任何元素是否包含 X 以及:

<strong>any (elem X)</strong> [[X, X, X], [O, O, O]]

或使用 elem 作为中缀运算符:

<strong>any (X `elem`)</strong> [[X, X, X], [O, O, O]]

但它们在语义上完全相同。

这些将检查 any 的子列表(这里是 [X, X, X][O, O, O]),X 是否是这些列表的元素.

另一种选择,如 是将所有子列表连接成一个列表,然后对这些子列表执行 elem 检查,因此:

elem X (<strong>concat</strong> [[X, X, X], [O, O, O]])