cod*_*oob 5 haskell nested list
我想检查嵌套列表中的元素。
我已经尝试了几种方法,但总是会得到错误的结果或一些错误。
[X] `elem` [[X,X,X],[O,O,O]]
Run Code Online (Sandbox Code Playgroud)
返回 False 但应该为 True
X `elem` [[X,X,X],[O,O,O]]
Run Code Online (Sandbox Code Playgroud)
抛出错误,类型无法匹配。
我在这里错过了什么吗?
[X]
列表的元素是子列表,列表中没有子列表。
您可以检查子列表中是否有任何元素包含X
:
any (elem X) [[X, X, X], [O, O, O]]
Run Code Online (Sandbox Code Playgroud)
或使用elem
as 中缀运算符:
any (X `elem`) [[X, X, X], [O, O, O]]
Run Code Online (Sandbox Code Playgroud)
但它们在语义上是完全相同的。
这些将检查任何子列表(此处[X, X, X]
和[O, O, O]
)X
是否是这些列表的元素。
正如@amalloy 所描述的,另一种选择是将所有子列表连接到一个列表中,然后对elem
这些子列表进行检查,因此:
elem X (concat [[X, X, X], [O, O, O]])
Run Code Online (Sandbox Code Playgroud)