私はElixirで簡単な例を書いていますが、うまくいきますが、その方法がよくわかりません。
defmodule MyList do
def sum([],acc \\ 0), do: acc
def sum([head | tail], acc), do: sum(tail,acc + head)
end
MyList.sum を呼び出すと、期待される結果が得られます
sum([]) => 0
sum([1,2,3]) => 6
コンパイラがエラーをスローするため、2 番目の合計にデフォルト パラメータを追加できません
def sum/2 has default values and multiple clauses, use a separate clause for declaring defaults
私の質問は、なぜ sum([1,2,3]) が機能するのですか? どの定義とも一致しません。関数はまだ末尾再帰的ですか?