Jak napisać listę Erlang połączoną bez użycia modułu list?

Książka, którą czytam o Erlangu, ma ćwiczenia z tyłu, a jedną z nich jest ponowne utworzenie list: funkcja dołączania.

Mógłbym to zrobić po prostu za pomocą operatora ++, ale czy to nie jest naprawdę powolne? Myślę, że celem tego ćwiczenia jest wykonanie operacji na liście, które piszę.

Do tej pory jedynym podejściem, które mogłem wymyślić, jest:

concat([], _, Results)->
  Results;
concat(_, [], Results)->
  Results;
concat([Ah|At],B,Results) ->
  concat(At,B,[Ah|Results]).

Ale wiem, że to niepoprawne ...

Jakieś sugestie, jak to zrobić?

EDYCJA: Aby wyjaśnić pytanie, oto przykładowe wejście i wyjście:

Wejście: [[1,2,3], [], [4,5], [6]] Wyjście: [1,2,3,4,5,6]

Po pewnym czasie wymyśliłem również ten kod:

append([A|[B|[T|[]]]]) ->
  append([A++B|T]);
append([H|T]) ->
  H++T.

Jednak działa to tylko wtedy, gdy lista ma rozmiar 3. Jak mogę to zmodyfikować, aby działała dla dowolnej liczby losowo wybranych list?

questionAnswers(4)

yourAnswerToTheQuestion