Credence.Pattern.PreferFrequenciesOverGroupBy
(credence v0.8.0)
Copy Markdown
Detects Enum.group_by/1 with an identity function piped into Enum.map/2
that counts group lengths, then piped into Enum.count/2 with a > 1
predicate — a manual "count duplicate occurrences" pattern that
Enum.frequencies/1 followed by Enum.count/2 handles more idiomatically.
Bad
input
|> String.graphemes()
|> Enum.group_by(fn char -> char end)
|> Enum.map(fn {_key, values} -> length(values) end)
|> Enum.count(fn count -> count > 1 end)Good
input
|> String.graphemes()
|> Enum.frequencies()
|> Enum.count(fn {_char, count} -> count > 1 end)