I think this should be implemented in terms of `delete!`, which resizes very intelligently.