我正在阅读的关于 Erlang 的书的后面有练习,其中之一是重新创建 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 的情况。如何修改它以使其适用于任何给定数量的随机大小的列表?