In most cases `:infinity` is treated as an pos-integer-like value (timeouts etc.)
While dealing with long collections (lists) one might be interested in the user-configured length of the collection head to return. This might happen when the collection has been previously ordered and the tail is of lesser value compared to the head.
In such cases I find myself writing
```
|> then(fn
{collection, :infinity} -> collection
{collection, n} when is_integer(n) -> Enum.take(collection, n)
end)
```
I think making `Enum.take/2` to accept `:infinity` as the second argument would bring no harm. It could simply return back the `Enumerable.t()`.
WDYT? I am all in for providing a PR if accepted.
--
AM