import Control.Arrow removeAt :: Int -> [a] -> [a] removeAt n xs = (take (n-1) xs) ++ (drop n xs) removeAtT :: Int -> [a] -> (a,[a]) removeAtT 1 (x:xs) = (x,xs) removeAtT n (x:xs) = (fst &&& ((x:).snd)) $ removeAtT (n-1) xs