not package:rio

Boolean "not"
O(n) notElem is the inverse of elem
notElem is the negation of elem.

Examples

Basic usage:
>>> 3 `notElem` []
True
>>> 3 `notElem` [1,2]
True
>>> 3 `notElem` [1,2,3,4,5]
False
For infinite structures, notElem terminates if the value exists at a finite distance from the left side of the structure:
>>> 3 `notElem` [1..]
False
>>> 3 `notElem` ([4..] ++ [3])
* Hangs forever *
Is the key not a member of the map? See also member.
notMember 5 (fromList [(5,'a'), (3,'b')]) == False
notMember 1 (fromList [(5,'a'), (3,'b')]) == True
Is the element not in the set?
Cn: Other, Not Assigned
_Nothing targets a () if the Maybe is a Nothing, and doesn't target anything otherwise:
>>> Just 1 ^.. _Nothing
[]
>>> Nothing ^.. _Nothing
[()]
It's not particularly useful (unless you want to use has _Nothing as a replacement for isNothing), and provided mainly for consistency. Implementation:
_Nothing f Nothing = const Nothing <$> f ()
_Nothing _ j       = pure j
mapKeysMonotonic f s == mapKeys f s, but works only when f is strictly monotonic. That is, for any values x and y, if x < y then f x < f y. The precondition is not checked. Semi-formally, we have:
and [x < y ==> f x < f y | x <- ls, y <- ls]
==> mapKeysMonotonic f s == mapKeys f s
where ls = keys s
This means that f maps distinct original keys to distinct resulting keys. This function has better performance than mapKeys.
mapKeysMonotonic (\ k -> k * 2) (fromList [(5,"a"), (3,"b")]) == fromList [(6, "b"), (10, "a")]
valid (mapKeysMonotonic (\ k -> k * 2) (fromList [(5,"a"), (3,"b")])) == True
valid (mapKeysMonotonic (\ _ -> 1)     (fromList [(5,"a"), (3,"b")])) == False
binotElem is the negation of bielem.

Examples

Basic usage:
>>> binotElem 42 (17, 42)
False
>>> binotElem 42 (17, 43)
True
>>> binotElem 42 (Left 42)
False
>>> binotElem 42 (Right 13)
True
>>> binotElem 42 (BiList [1..5] [1..100])
False
>>> binotElem 42 (BiList [1..5] [1..41])
True
The isNothing function returns True iff its argument is Nothing.

Examples

Basic usage:
>>> isNothing (Just 3)
False
>>> isNothing (Just ())
False
>>> isNothing Nothing
True
Only the outer constructor is taken into consideration:
>>> isNothing (Just Nothing)
False
The mapMonotonic f s == map f s, but works only when f is strictly increasing. The precondition is not checked. Semi-formally, we have:
and [x < y ==> f x < f y | x <- ls, y <- ls]
==> mapMonotonic f s == map f s
where ls = toList s