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?