code

2017年1月22日 星期日

Erlang筆記6 - Appending a List, 以及Accumulator的使用

忠告:Appending a List

List在appending時,最好放在head,例如[H|List]來形成一個新的list。
之後如果有需要再call lists:reverse(L),這是erlang compiler 高度最佳化的function。

避免使用 List ++ [Head] 來做list concatenation。因為這是極度沒效率。
不過除非performance是個issue,否則上述的code有邏輯清楚的優勢,就看你的取捨。


Accumulator

有時候list comprehension不夠有效率,例如以下的程式需要traverse list兩次才能產生兩個偶數和奇數的lists:


所以這時候就要自己implement 這個function,我們可以用accumulator的方式來寫,這是標準的FP寫法之一(或許甚至不需要accumulators,只是在這邊紀錄Erlang的accumulators寫法):





沒有留言:

張貼留言