splitAt n xs returns a tuple where first element is
xs prefix of length
n and second element is the
remainder of the list:
splitAt is an instance of the more general
genericSplitAt, in which
n may be of any integral
type.
Laziness
It is equivalent to
(take n xs, drop n xs)
unless
n is
_|_:
splitAt _|_ xs = _|_, not
(_|_, _|_)).
The first component of the tuple is produced lazily:
>>> fst (splitAt 0 undefined)
[]
>>> take 1 (fst (splitAt 10 (1 : undefined)))
[1]
Examples
>>> splitAt 6 "Hello World!"
("Hello ","World!")
>>> splitAt 3 [1,2,3,4,5]
([1,2,3],[4,5])
>>> splitAt 1 [1,2,3]
([1],[2,3])
>>> splitAt 3 [1,2,3]
([1,2,3],[])
>>> splitAt 4 [1,2,3]
([1,2,3],[])
>>> splitAt 0 [1,2,3]
([],[1,2,3])
>>> splitAt (-1) [1,2,3]
([],[1,2,3])