《Programming Erlang》读书笔记(持续更新)
Erlang惯用模式:
递归求和:
list-at-a-time操作:
绑定测试:
尾递归:
递归求和:
total([Head|Tail]) ->
some_function_of(Head) + total(Tail);
Total([]) ->
0.
some_function_of(Head) + total(Tail);
Total([]) ->
0.
list-at-a-time操作:
Even = fun(X) -> (X rem 2) =:= 0 end.
lists:map(Even,[1,2,3,4]).
>>[false,true,false,true]
lists:filter(Even,[1,2,3,4]).
>>[2,4]
lists:map(Even,[1,2,3,4]).
>>[false,true,false,true]
lists:filter(Even,[1,2,3,4]).
>>[2,4]
绑定测试:
MakeTest = fun(L) -> (fun(X) -> lists:member(X, L) end) end.
Fruit = [apple,pear,orange].
IsFruit = MakeTest(Fruit).
lists:filter(IsFruit,[dog,orange,cat,apple,bear]).
>>[orange,apple]
Fruit = [apple,pear,orange].
IsFruit = MakeTest(Fruit).
lists:filter(IsFruit,[dog,orange,cat,apple,bear]).
>>[orange,apple]
尾递归:
loop() ->
receive
{From, What1} ->
From ! {self(), Result1},
loop();
{From, What2} ->
From ! {self(), Result2},
loop();
{From, What3} ->
From ! {self(), Result3},
loop();
{From, Other} ->
From ! {self(), error},
loop()
end.
receive
{From, What1} ->
From ! {self(), Result1},
loop();
{From, What2} ->
From ! {self(), Result2},
loop();
{From, What3} ->
From ! {self(), Result3},
loop();
{From, Other} ->
From ! {self(), error},
loop()
end.