Credence.Pattern.NoListAppendInRecursion
(credence v0.4.3)
Copy Markdown
Performance rule: Detects acc ++ [expr] passed directly in a recursive
tail call, where a matching base case returns the accumulator.
The auto-fix rewrites acc ++ [expr] to [expr | acc] in the recursive
clause and wraps the base case return with Enum.reverse/1.
Bad
def build([h | t], result) do
build(t, result ++ [h * 2])
end
def build([], result), do: resultGood
def build([h | t], result) do
build(t, [h * 2 | result])
end
def build([], result), do: Enum.reverse(result)