split [] = ([], []) split [a] = ([a], []) split (a:b:rest) = (a:a', b:b') where (a', b') = split rest split :: [t] -> ([t], [t])