Мне нужен очень эффективный способ найти дубликаты в несортированной последовательности. Это то, что я придумал, но у него есть несколько недостатков, а именно:
- излишне подсчитывает вхождения вне 2
- потребляет всю последовательность перед получением дубликатов
- создает несколько промежуточных последовательностей
module Seq =
let duplicates items =
items
|> Seq.countBy id
|> Seq.filter (snd >> ((<) 1))
|> Seq.map fst
Независимо от недостатков, я не вижу причины заменять это дважды кодом. Можно ли улучшить это с помощью сравнительно сжатого кода?