口で言うより行うことがErlang習得への近道と信じています。
lists:mapfoldl
mapfoldl(fun((term, term) -> {term, term}), term, [term]) -> term
mapfoldl(fun((要素IN, 累積IN) -> {要素OUT, 累積OUT}), 累積の初期値, リスト) -> {新しいリスト, 累積の最終値}
練習してみます。
% 各要素を2倍することと全要素の和を求めることを同時にやる
> lists:mapfoldl(fun (X, Acc) -> {X * 2, Acc + X} end, 0, [1, 2, 3, 4, 5]).
{[2,4,6,8,10],15}
lists
モジュールには他にもリスト処理のための関数がたくさんあります。
Elixirにも挑戦したい
闘魂ElixirシリーズとElixir Schoolがオススメです。