>>> and [] True
>>> and [True] True
>>> and [False] False
>>> and [True, True, False] False
>>> and (False : repeat True) -- Infinite list [False,True,True,True,True,True,True... False
>>> and (repeat True) * Hangs forever *
>>> or [] False
>>> or [True] True
>>> or [False] False
>>> or [True, True, False] True
>>> or (True : repeat False) -- Infinite list [True,False,False,False,False,False,False... True
>>> or (repeat False) * Hangs forever *
>>> null [] True >>> null [1] False >>> null [1..] False
allSame [1,1,2] == False allSame [1,1,1] == True allSame [1] == True allSame [] == True allSame (1:1:2:undefined) == False \xs -> allSame xs == (length (nub xs) <= 1)
anySame [1,1,2] == True anySame [1,2,3] == False anySame (1:2:1:undefined) == True anySame [] == False \xs -> anySame xs == (length (nub xs) < length xs)
>>> allEqual "aab" False >>> allEqual "aaa" True >>> allEqual "aa" True >>> allEqual "a" True >>> allEqual "" True
>>> isDiag [2,2,2] True >>> isDiag [1,2] False
>>> distinct [] True >>> distinct [1] True >>> distinct [1, 2, 3] True >>> distinct [1, 2, 2] False
>>> allEqual [1..] False >>> allEqual [3, 3, 3, 3] True >>> allEqual [] True >>> allEqual [1] True
>>> allAdjUnique [1, 2, 3, 2] True >>> allAdjUnique [1, 2, 2, 3] False >>> allAdjUnique [] True >>> allAdjUnique [1] True
>>> palindrome "rotor" True >>> palindrome "rover" False >>> palindrome "" True >>> palindrome "a" True