:: Eq a => [a] -> a -> Bool -package:numhask -package:hedgehog -package:basic-prelude

(∋) = 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.
(∈) = elem U+2208, ELEMENT OF
(∉) = notElem U+2209, NOT AN ELEMENT OF
O(n) Check if the vector contains an element.
O(n) Check if the vector does not contain an element (inverse of elem).
O(n) Check if the vector contains an element
O(n) Check if the vector does not contain an element (inverse of elem)