Существует ли в библиотеке Clojure функция для фильтрации коллекции и возврата пары коллекций, одна из которых содержит элементы, для которых предикат вернул значение true, а другая - элементы, для которых предикат возвратил значение false?
Например:
(let [[yays nays] (some-fn pred coll)] ... )
Более или менее, я ищу способ сортировки на основе предиката, а не выбрасывания (например, с filter
или remove
).
(Примечание: я знаю, что решение состоит в том, чтобы вызывать filter
и remove
для коллекции отдельно; я просто хотел бы знать, есть ли встроенная функция, которая может выполнить это более эффективно).
(Изменить: seq-utils/separate
не считается более эффективным. Он оценивает предикат дважды для каждого элемента.)