| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Data.List.Predicate
Description
Predicates (True/False queries) on lists.
The functions in this module are as lazy as possible. For example,
, since a list of one element must be
sorted, no matter the comparison function, or the value of the element.sortedBy undefined [undefined] == True
Synopsis
- allEqual :: Eq a => [a] -> Bool
- allEqualBy :: (a -> a -> Bool) -> [a] -> Bool
- sorted :: Ord a => [a] -> Bool
- sortedBy :: (a -> a -> Ordering) -> [a] -> Bool
- allUnique :: Ord a => [a] -> Bool
- allUniqueBy :: (a -> a -> Ordering) -> [a] -> Bool
- allAdjUnique :: Eq a => [a] -> Bool
- allAdjUniqueBy :: (a -> a -> Bool) -> [a] -> Bool
- ascSequential :: Enum a => [a] -> Bool
- descSequential :: Enum a => [a] -> Bool
- palindrome :: Eq a => [a] -> Bool
All equal
allEqual :: Eq a => [a] -> Bool Source #
O(n). Whether the elements are all equal.
>>>allEqual [1..]False>>>allEqual [3, 3, 3, 3]True>>>allEqual []True>>>allEqual [1]True
allEqualBy :: (a -> a -> Bool) -> [a] -> Bool Source #
O(n). Like allEqual, with a custom equality test.
>>>allEqualBy ((==) `on` (`mod` 10)) [3, 13, 23]True>>>allEqualBy ((==) `on` (`mod` 10)) [3, 13, 24]False
Sortedness
sorted :: Ord a => [a] -> Bool Source #
O(n). Whether the elements are in sorted order.
>>>sorted [1, 2, 3, 3]True>>>sorted [1, 2, 3, 2]False>>>sorted []True>>>sorted [1]True
sortedBy :: (a -> a -> Ordering) -> [a] -> Bool Source #
O(n). Like sorted, with a custom comparison test.
>>>sortedBy (comparing Down) [3, 2, 1]True>>>sortedBy (comparing Down) [3, 2, 1, 2]False
All unique
allUnique :: Ord a => [a] -> Bool Source #
O(n log(n)). Whether the elements are all unique.
>>>allUnique [1, 2, 5, 7]True>>>allUnique [1, 2, 5, 2]False>>>allUnique []True>>>allUnique [1]True
allUniqueBy :: (a -> a -> Ordering) -> [a] -> Bool Source #
O(n log(n)). Like allUnique, with a custom comparison test.
>>>allUniqueBy (comparing head) ["apple", "bow", "cat"]True>>>allUniqueBy (comparing head) ["apple", "bow", "ant"]False
allAdjUnique :: Eq a => [a] -> Bool Source #
O(n). Whether all adjacent pairs of elements are different. Useful for determining whether a sorted list is all unique.
>>>allAdjUnique [1, 2, 3, 2]True>>>allAdjUnique [1, 2, 2, 3]False>>>allAdjUnique []True>>>allAdjUnique [1]True
allAdjUniqueBy :: (a -> a -> Bool) -> [a] -> Bool Source #
O(n). Like allAdjUnique, with a custom equality test.
>>>allAdjUniqueBy ((==) `on` head) ["apple", "bow", "cat", "ant"]True>>>allAdjUniqueBy ((==) `on` head) ["apple", "ant", "bow", "cat"]False
Sequential
ascSequential :: Enum a => [a] -> Bool Source #
O(n). Whether the list is increasing sequentially (one-by-one).
>>>ascSequential [1, 2, 3, 4, 5]True>>>ascSequential [1, 2, 3, 4, 8]False>>>ascSequential ([] :: [Int])True>>>ascSequential [1]True
descSequential :: Enum a => [a] -> Bool Source #
O(n). Whether the list is descending sequentially (one-by-one).
>>>descSequential [5, 4, 3, 2, 1]True>>>descSequential [5, 4, 3, 3, 1]False>>>descSequential ([] :: [Int])True>>>descSequential [1]True
Miscellaneous
palindrome :: Eq a => [a] -> Bool Source #
O(n). Whether the input is a palindrome, i.e., the same forwards and backwards.
>>>palindrome "rotor"True>>>palindrome "rover"False>>>palindrome ""True>>>palindrome "a"True