split :: [a] -> Int -> ([a],[a]) split xs c = splitHelper [] xs c where splitHelper pre nxt 0 = (reverse pre, nxt) splitHelper pre (x:nxt) c = splitHelper (x:pre) nxt (c-1) split' (x:xs) c | c>0 = let (pre,nxt) = split' xs (c-1) in (x:pre,nxt) split' xs _ = ([],xs)