2011-08-30 22 views
5

在给定的两对比较中,哪一对(每对)对于系统资源二郎神:列表:append/2与erlang:'++'/ 2,附加到列表末尾与附加到它的头

的Qn1:lists:append(L1,L2)erlang:'++'(L1,L2)
QN2写了列表的头说:[NewHead|List]与写作与列表的末尾:List ++ [NewValue]

我问这个,因为有是我的程序的密集部分h将阅读和写入列表。我需要决定我是否会写信给名单的负责人或写信给他们的目的,反之亦然。

回答

18

1:它们是相同的功能。 'append'是'++'的别名(反之亦然)。另请参见Erlang ++ operator. Syntactic sugar, or separate operation?

2:不要通过追加来逐步建立列表。追加一次是好的,但在循环中追加会给你二次性的行为。即,AddedStuff ++累加器是可以的(即使在循环中),因为你正在向左“增长”,但是累加器++ AddedStuff在一个循环中(向右增长)非常糟糕。如果顺序很重要,向左增长然后逆向或后来排序会好得多。