:: Eq a => [a] -> a -> Bool -package:vector -package:rio

(∋) = flip (∈) U+220B, CONTAINS AS MEMBER
(∌) = flip (∉) U+220C, DOES NOT CONTAIN AS MEMBER
(∋) = flip (∈) U+220B, CONTAINS AS MEMBER
(∌) = flip (∉) U+220C, DOES NOT CONTAIN AS MEMBER
The has function returns True if the element appears in the list; it is equivalent to member except the order of the arguments is reversed, making it a function from an ordered list to its characteristic function.
Check membership for the same list often. Use partially applied to create membership predicate hasElem xs :: a -> Bool.
  • First time: O(n log n) in the worst case.
  • Subsequently: O(log n).
Specification: hasElem xs == (elem xs).
hasElem xs x = elem x xs except that xs is turned into a Set first. Use underapplied to speed up subsequent lookups, e.g. filter (hasElem xs) ys. Only amortized when used several times! Time complexity <math> for <math> lookups in a list of length <math>. (Compare this to elem's <math>.) This is Agda.Utils.List.hasElem.
elem is the list membership predicate, usually written in infix form, e.g., x `elem` xs. For the result to be False, the list must be finite; True, however, results from an element equal to x found at a finite index of a finite or infinite list.
>>> 3 `elem` []
False

>>> 3 `elem` [1,2]
False

>>> 3 `elem` [1,2,3,4,5]
True

>>> 3 `elem` [1..]
True

>>> 3 `elem` [4..]
* Hangs forever *
notElem is the negation of elem.
>>> 3 `notElem` []
True

>>> 3 `notElem` [1,2]
True

>>> 3 `notElem` [1,2,3,4,5]
False

>>> 3 `notElem` [1..]
False

>>> 3 `notElem` [4..]
* Hangs forever *
(∈) = elem U+2208, ELEMENT OF
(∉) = notElem U+2209, NOT AN ELEMENT OF
Does the element occur in the structure? Note: elem is often used in infix form.

Examples

Basic usage:
>>> 3 `elem` []
False
>>> 3 `elem` [1,2]
False
>>> 3 `elem` [1,2,3,4,5]
True
For infinite structures, the default implementation of elem terminates if the sought-after value exists at a finite distance from the left side of the structure:
>>> 3 `elem` [1..]
True
>>> 3 `elem` ([4..] ++ [3])
* Hangs forever *
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 *
Does the element occur in the structure?
notElem is the negation of elem.
Does the element occur in the structure?
(∈) = elem U+2208, ELEMENT OF
(∉) = notElem U+2209, NOT AN ELEMENT OF
The member function returns True if the element appears in the ordered list.
Test element using ordered set.
Test not element using ordered set.