《Programming Erlang》读书笔记(持续更新)

Erlang惯用模式:
递归求和:
total([Head|Tail]) ->
  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]


绑定测试:
MakeTest = fun(L) -> (fun(X) -> lists:member(X, L) endend.

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.


posted on 2009-08-07 15:45  Quon Lu  阅读(223)  评论(0编辑  收藏  举报

导航