2011-08-30 10 views
5

比較の2つの対のうち、どれがアーラン:リスト:append/2対erlang: '++'/2、リストの末尾に追加してヘッドに追加すると比較します。

Qn1は:lists:append(L1,L2)と、リストの先頭に書き込み
Qn2のerlang:'++'(L1,L2)対は言う:[NewHead|List]を持つリストの最後に書き込みを対:List ++ [NewValue]

私はので、これを求めているが私のプログラムの集中的な部分ですhはリストを読み書きします。私はリストの頭に書いたり、その端に書いたり、その逆にすることを決定する必要があります。

答えて

18

1:これらは同じ機能です。 'append'は '++'のエイリアスです(またはその逆)。関連項目Erlang ++ operator. Syntactic sugar, or separate operation?

2:リストを増分的に追加しないでください。一度追加するとOKですが、ループで追加すると二次的な振る舞いになります。つまり、AddedStuff ++ Accumulatorは "左に"成長しているので(ループ内であっても)OKですが、Accumulator ++ AddedStuffはループの中で(右に成長する)本当に悪いです。左に向かって成長させてから、その順序が重要であれば後で並べ替える方がはるかに優れています。

関連する問題