リスト内包表記
erl$ [X*X || X <- [1 ,2 ,3, 4]].
[1,4,9,16]
erl$ [X || {a ,X} <- [{a , 1} , {b ,2}, {c, 3}, {a, 4}, hello, "wow", {a, "boo"}]].
[1,4,"boo"]
ガード。ファイル上の出現順にマッチしていくのでwhenでマッチしたら次の行には処理が進まない。なのでX>Yじゃないケースだけ->Yに到達してmaxの機能が実現できる。
-module(mylists).
-export([sum/1, map/2, max/2]).
sum([H|T]) -> H + sum(T);
sum([]) -> 0.
map(_, []) -> [];
map(F, [H|T]) -> [F(H) | map(F, T)].
max(X, Y) when X > Y -> X;
max(X, Y) -> Y.
0 件のコメント:
コメントを投稿