Долго не думал почему этот splice не так работает, оказалось он, с одной стороны, отрезает внутри объекта кусок, с другой -- оставшийся кусок возвращает. Не делайте так, кароч.
обычный паттерн-матчинг, расширенный на сайдэффекты. Был тупл (arg1, arg2), заматчили, получили arg1 и arg2. Тут то же самое. Ну, исходное значение поменялось, но императивщина же (и жс, тем более), простительно.