Как написать конкатенацию списков Эрланга без использования модуля списков?

Книга, которую я читаю об Эрланге, имеет упражнения позади, и одна из них состоит в том, чтобы заново создать списки: добавить функцию.

Я мог бы сделать это просто используя оператор ++, но разве это не очень медленно? И я думаю, что смысл этого упражнения состоит в том, чтобы сделать это, используя операции со списком, которые я пишу.

Пока что единственный подход, о котором я мог подумать, это сделать что-то вроде:

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

Но я знаю, что это неправильно ...

Любые предложения о том, как это сделать?

РЕДАКТИРОВАТЬ: Чтобы уточнить вопрос, вот пример ввода и вывода:

Ввод: [[1,2,3], [], [4,5], [6]] Выход: [1,2,3,4,5,6]

Поработав некоторое время, я также придумал этот код:

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

Тем не менее, это работает только тогда, когда список имеет размер 3. Как я могу изменить это так, чтобы он работал для любого заданного количества списков произвольного размера?

Ответы на вопрос(4)

Ваш ответ на вопрос