>>> fst (splitAt 0 undefined) []
>>> take 1 (fst (splitAt 10 (1 : undefined))) [1]
>>> 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])
'splitAt' n xs == ('take' n xs, 'drop' n xs) xs == ys ++ zs where (ys, zs) = 'splitAt' n xs
>>> 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])It is equivalent to (take n xs, drop n xs) when n is not _|_ (splitAt _|_ xs = _|_). splitAt is an instance of the more general genericSplitAt, in which n may be of any integral type.
\(Shape xs) (List ys) -> Match.splitAt xs ys == (Match.take xs ys, Match.drop xs ys)
\(Shape xs) (List ys) -> Match.splitAt xs ys == List.splitAt (length xs) ys
>>> 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])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]splitAt is an instance of the more general genericSplitAt, in which n may be of any integral type.
splitAt :: (Monad m) => Int -> Stream (Of a) m r -> Stream (Of a) m (Stream (Of a) m r)
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])It is equivalent to (take n xs, drop n xs) when n is not _|_ (splitAt _|_ xs = _|_). splitAt is an instance of the more general genericSplitAt, in which n may be of any integral type.