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**

**Examples**

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

>>> 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] []

Take a given number of entries in key order, beginning
with the smallest keys.

take n = fromDistinctAscList . take n . toAscList

The first `i` elements of a sequence. If
`i` is negative, `take i s` yields the empty
sequence. If the sequence contains fewer than `i` elements, the
whole sequence is returned.

Take a given number of elements in order, beginning with
the smallest ones.

take n = fromDistinctAscList . take n . toAscList

The first `n` elements

Take the `n` first elements of the mutable vector without
making a copy. For negative `n`, the empty vector is returned.
If `n` is larger than the vector's length, the vector is
returned unchanged.

Take the `n` first elements of the mutable vector without
making a copy. For negative `n`, the empty vector is returned.
If `n` is larger than the vector's length, the vector is
returned unchanged.

Take the `n` first elements of the mutable vector without
making a copy. For negative `n`, the empty vector is returned.
If `n` is larger than the vector's length, the vector is
returned unchanged.

Consume exactly `n` bytes of input.