Credence.Pattern.NoChunkByIdentityForDedup
(credence v0.7.1)
Copy Markdown
Detects Enum.chunk_by(enum, identity_fn) followed by extracting the
first element of each chunk, which is a verbose reimplementation of
Enum.dedup/1.
Enum.dedup/1 removes consecutive duplicates in a single pass with no
intermediate list allocation. The chunk_by + map(first) pattern
allocates a list of sublists just to throw them away.
Bad
Enum.chunk_by(list, & &1) |> Enum.map(&List.first/1)
list |> Enum.chunk_by(fn x -> x end) |> Enum.map_join(&List.first/1)Good
Enum.dedup(list)
list |> Enum.dedup() |> Enum.join()Auto-fix
Replaces chunk_by(identity) |> map(&List.first/1) with Enum.dedup(),
and the map_join variant with Enum.dedup() |> Enum.join().