¿Cómo puedo escribir la concatenación de listas de Erlang sin usar el módulo de listas?

El libro que estoy leyendo sobre Erlang tiene ejercicios en la parte posterior y uno es recrear las listas: añadir función.

Podría hacer esto simplemente usando el operador ++, pero ¿no es esto realmente lento? Y creo que el objetivo del ejercicio es hacerlo utilizando las operaciones de lista que escribo.

Hasta ahora, el único enfoque en el que podría pensar es hacer algo como:

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

Pero sé que esto es incorrecto ...

¿Alguna sugerencia sobre cómo hacer esto?

EDITAR: Para aclarar la pregunta, aquí hay un ejemplo de entrada y salida:

Entrada: [[1,2,3], [], [4,5], [6]] Salida: [1,2,3,4,5,6]

Después de trabajar un tiempo, también se me ocurrió este código:

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

Sin embargo, esto solo funciona cuando la lista es del tamaño 3. ¿Cómo puedo modificar esto para que funcione con una cantidad determinada de listas de tamaño aleatorio?