Wie kann man den Erlang-Kombinationsalgorithmus in Elixir umschreiben?

Ich habe in den letzten Wochen an Elixir herumgebastelt. Ich bin gerade auf dieses prägnante @ gestoßKombinationsalgorithmus in Erlang, das ich in Elixir umschreiben wollte, aber feststeckte.

Erlang Version:

comb(0,_) ->
  [[]];
comb(_,[]) ->
  [];
comb(N,[H|T]) ->
  [[H|L] || L <- comb(N-1,T)]++comb(N,T).

Elixir Version Ich habe mir das ausgedacht, aber es ist nicht korrekt:

def combination(0, _), do: [[]]
def combination(_, []), do: []
def combination(n, [x|xs]) do
  for y <- combination(n - 1, xs), do: [x|y] ++ combination(n, xs)
end

Beispielgebrauch mit falschen Ergebnissen:

iex> combination(2, [1,2,3])
[[1, 2, [3], [2, 3]]]

Haben Sie einen Hinweis darauf, was ich falsch mache?

Vielen Dank
Sean

Antworten auf die Frage(2)

Ihre Antwort auf die Frage