首页 > 解决方案 > 列表中列表的长度并返回布尔值

问题描述

我对 Haskell 相当陌生,我试图在列表中查找列表的长度,如果它大于 3 则返回 true,反之亦然。例如:

[[Bool]] -> Bool
xs = length xs >= 3

如果外部列表等于或大于 3,则返回 true,但我想检查内部列表是否具有相同的参数。另外,我知道地图长度会生成第二个列表的长度列表。

[[T,F,T],[F,F,T],[F,F]] -- output : False
[[T,F,T],[F,F,T],[T,F,F]] -- output : True

这是我期望找到的。

我希望我的问题的解释很清楚,谢谢。

标签: haskell

解决方案


all使用该功能的可能解决方案:

check :: [[Bool]] -> Bool
check = all ((>=3) . length)

当每个元素都满足一个谓词时,该all函数将返回;True在这种情况下,谓词(>=3) . length评估True列表的长度何时大于或等于三。因此,如果all内部列表的长度大于或等于三,则check计算结果为True

使用您提供的代码并避免无点样式,也许这将有助于拼凑上述解决方案:

lengthGreaterEqualThree :: [Bool] -> Bool
lengthGreaterEqualThree xs = length xs >= 3

check' :: [[Bool]] -> Bool
check' listOfLists = all lengthGreaterEqualThree listOfLists

推荐阅读