“已排序”是用于检查列表是否按升序排序的功能。
pairs :: [a] -> [(a,a)]
pairs xs = zip xs (tail xs)
sorted :: Ord a => [a] -> Bool
sorted xs = and [x <= y | (x,y) <- pairs xs]
我想知道“和”在经过排序的xs中做什么?
答案 0 :(得分:7)
它称为and
function from the standard library:
and :: Foldable t => t Bool -> Bool
and
返回布尔容器的合取。为了使结果为True
,容器必须是有限的。False
是False
值的结果,该值距离左端有限。
答案 1 :(得分:0)
[x <= y | (x,y) <- pairs xs]
对于上述代码段,实际上是bool值的列表(请注意,该值由“ []”包围)
and
的作用是获取布尔值列表,只需对所有值应用“和”逻辑,然后返回布尔值。
例如,如果我们向and
提供列表[True,True,True],则将返回True。如果列表中的任何一个元素为False,则将返回False。