口で言うより行うことがErlang習得への近道と信じています。
lists:filtermap
filtermap(fun((term) -> boolean | {true, term}), [term]) -> [term]
filtermap(要素を取り出す条件, リスト) -> 新しいリスト
lists:filterの処理とlists:mapの処理を一度に実行します。第一引数に渡す関数は{true, 新しい値}
もしくはfalse
を返します。
% リストから偶数のみを取り出して1000加算する関数
IsEvenThenAdd1000 = fun(X) ->
case X rem 2 of
0 -> {true, X + 1000};
1 -> false
end
end.
> lists:filtermap(IsEvenThenAdd1000, [1, 2, 3, 4]).
[1002,1004]
listsモジュールには他にもリスト処理のための関数がたくさんあります。
Elixirにも挑戦したい
闘魂ElixirシリーズとElixir Schoolがオススメです。