Ah, good catch! Thanks.
I beg to differ. What about this one:
def magic_function([]), do: []
def magic_function(list) do
list
|> Enum.reduce([nil], fn sublist, acc ->
for a <- acc, b <- sublist do
[b | List.wrap(a)]
end
end)
|> Enum.map(&Enum.reverse/1)
end
I think it covers all cases now. The initial accumulator of [nil] for the reduce handles the case when there’s only one sublist: the sublist’s elements are prepended to List.wrap(nil), which is an empty list.
So it appears recursion is not necessary after all






















