removeDirIfExists ∷ FilePath → IO ()
removeDirIfExists δ = removeDirectoryRecursive δ `catch` handleExists
  where handleExists ε
          | isDoesNotExistError ε = return ()
          | otherwise = throwIO ε

copyDir
removeDirIfExists ∷ FilePath → IO ()
removeDirIfExists δ = removeDirectoryRecursive δ `catch` handleExists
  where handleExists ε
          | isDoesNotExistError ε = return ()
          | otherwise = throwIO ε
removeDirIfExists δ = removeDirectoryRecursive δ `catch` handleExists
  where handleExists ε
          | isDoesNotExistError ε = return ()
          | otherwise = throwIO ε