halve :: [a] -> ([a],[a]) halve [x] = (b,c) where b = take (div (length x) 2) [x] c = take (div (length x) 2) (reverse [x])