忠告: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寫法):
沒有留言:
張貼留言