:: Int -> [a] -> [a]

take n, applied to a list xs, returns the prefix of xs of length n, or xs itself if n >= length xs. It is an instance of the more general genericTake, in which n may be of any integral type.

Laziness

>>> take 0 undefined
[]

>>> take 2 (1 : 2 : undefined)
[1,2]

Examples

>>> take 5 "Hello World!"
"Hello"
>>> take 3 [1,2,3,4,5]
[1,2,3]
>>> take 3 [1,2]
[1,2]
>>> take 3 []
[]
>>> take (-1) [1,2]
[]
>>> take 0 [1,2]
[]
drop n xs returns the suffix of xs after the first n elements, or [] if n >= length xs. It is an instance of the more general genericDrop, in which n may be of any integral type.

Examples

>>> drop 6 "Hello World!"
"World!"
>>> drop 3 [1,2,3,4,5]
[4,5]
>>> drop 3 [1,2]
[]
>>> drop 3 []
[]
>>> drop (-1) [1,2]
[1,2]
>>> drop 0 [1,2]
[1,2]
takeExact n xs =
| n >= 0 && n <= length xs = take n xs
| otherwise                = error "some message"
dropExact n xs =
| n >= 0 && n <= length xs = drop n xs
| otherwise                = error "some message"
take n, applied to a list xs, returns the prefix of xs of length n, or xs itself if n >= length xs.
>>> take 5 "Hello World!"
"Hello"

>>> take 3 [1,2,3,4,5]
[1,2,3]

>>> take 3 [1,2]
[1,2]

>>> take 3 []
[]

>>> take (-1) [1,2]
[]

>>> take 0 [1,2]
[]
It is an instance of the more general genericTake, in which n may be of any integral type.
drop n xs returns the suffix of xs after the first n elements, or [] if n >= length xs.
>>> drop 6 "Hello World!"
"World!"

>>> drop 3 [1,2,3,4,5]
[4,5]

>>> drop 3 [1,2]
[]

>>> drop 3 []
[]

>>> drop (-1) [1,2]
[1,2]

>>> drop 0 [1,2]
[1,2]
It is an instance of the more general genericDrop, in which n may be of any integral type.
drop from the end of a list
Drop a number of elements from the end of the list.
dropEnd 3 "hello"  == "he"
dropEnd 5 "bye"    == ""
dropEnd (-1) "bye" == "bye"
\i xs -> dropEnd i xs `isPrefixOf` xs
\i xs -> length (dropEnd i xs) == max 0 (length xs - max 0 i)
\i -> take 3 (dropEnd 5 [i..]) == take 3 [i..]
Take a number of elements from the end of the list.
takeEnd 3 "hello"  == "llo"
takeEnd 5 "bye"    == "bye"
takeEnd (-1) "bye" == ""
\i xs -> takeEnd i xs `isSuffixOf` xs
\i xs -> length (takeEnd i xs) == min (max 0 i) (length xs)
dropRev n is like reverse . drop n . reverse but it is lazy enough to work for infinite lists, too.
\n xs -> dropRev n (xs::String) == reverse (drop n (reverse xs))
takeRev n is like reverse . take n . reverse but it is lazy enough to work for infinite lists, too.
\n xs -> takeRev n (xs::String) == reverse (take n (reverse xs))
keep every k-th value from the list
>>> sieve 6 ['a'..'z']
"agmsy"
rotate left
take n, applied to a list xs, returns the prefix of xs of length n, or xs itself if n > length xs:
take 5 "Hello World!" == "Hello"
take 3 [1,2,3,4,5] == [1,2,3]
take 3 [1,2] == [1,2]
take 3 [] == []
take (-1) [1,2] == []
take 0 [1,2] == []
It is an instance of the more general genericTake, in which n may be of any integral type.
drop n xs returns the suffix of xs after the first n elements, or [] if n > length xs:
drop 6 "Hello World!" == "World!"
drop 3 [1,2,3,4,5] == [4,5]
drop 3 [1,2] == []
drop 3 [] == []
drop (-1) [1,2] == [1,2]
drop 0 [1,2] == [1,2]
It is an instance of the more general genericDrop, in which n may be of any integral type.
Shuffle a list given a seed for an RNG
deleteAt deletes the element at an index. If the index is negative or exceeds list length, the original list will be returned.
Take elements from the end of a list.
Cycle a list by the given count. If positive, cycle to the left. If negative, cycle to the right:
>>> cycleN 2 [1,2,3,4,5]
[3,4,5,1,2]

>>> cycleN (-2) [1,2,3,4,5]
[4,5,1,2,3]
downsample throws away every n'th sample, eg,
downsample 2 [ 1, 2, 3, 4, 5, 6 ] == [ 1, 3, 5 ]