В книге, которую я читаю об Эрланге, есть упражнения, и одна из них - воссоздать списки: функция добавления.
Я мог бы сделать это просто используя оператор ++, но разве это не очень медленно? И я думаю, что смысл этого упражнения состоит в том, чтобы сделать это, используя операции со списком, которые я пишу.
Пока что единственный подход, о котором я могу подумать, это сделать что-то вроде:
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. Как я могу изменить это так, чтобы он работал для любого заданного количества списков произвольного размера?