私がErlangについて読んでいる本の後ろには演習があり、1つはlists:append関数を再作成することです。
++演算子を使用するだけでこれを行うことができますが、これは本当に遅いのではないでしょうか。そして、演習のポイントは、私が書いたリスト操作を使用してそれを行うことだと思います。
これまでのところ、私が考えることができる唯一のアプローチは、次のようなことを行うことです。
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の場合にのみ機能します。ランダムなサイズのリストの任意の数で機能するようにこれを変更するにはどうすればよいですか。