Противоположностью reject является select (возврат нового массива)
Противоположностью reject! является select! (редактирование массива на месте)
Противоположностью keep_if является delete_if (редактирование массива на месте)
Ответ 2
Я думаю, что это связано с хорошо продуманной семантикой, и я бы утверждал, что это правильно. Скажем, у вас уже есть множество вещей: "t1, t2 и t3"; если вы отклоняете подмножество, вы говорите: "Я отклоняю t1 и t2". Вы не упоминаете t3, потому что это не влияет на ваше действие (ваш отказ): по умолчанию "keep". Но если вы выражаете то, что собираетесь намереваться сохранить, и вы просто говорите: "Я держу t1 и t2", статус t3 ставится под сомнение: ведь у вас уже есть t1 и t2, поэтому, что бы сказать, (они уже находятся в состоянии по умолчанию, "сохраняют" ), тем более, что вы также не сохраняете t3. Используя синтаксис "keep_if", вы явно указываете, что существует условие (простое или составное), которое будет определять, что должно быть сохранено и что должно быть отброшено.