2008年5月7日水曜日

erlangはじめました。その2

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
なんかshellが重い。vimが快適に動いているので。

リスト内包表記

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 件のコメント: