我也学erlang(五)——简单的列表处理

简单的列表处理

  sum、map函数和测试如下:

  

-module(mylists).
-export([sum/1]).
-export([map/2]).
sum([H|T])      ->H+sum(T);
sum([])         ->0.
map(_,[])       ->[];
map(F,[H|T])    ->[F(H)|map(F,T)].

sum函数只是简单的计算列表中各个元素之和;map/2函数第一个子句对空列表不做任何处理,第二个子句对一个列表生成一个新的列表,其头是F(H),尾是map(F,T).

5> L=[1,3,7].  
[1,3,7]
6> mylists:sum(L).
11
8> mylists:map(fun(I)->2*I end,L).
[2,6,14]

有了sum和map函数之后,我们就可重新写sum函数了

-module(shop2).
-export([total/1]).
-import(lists,[map/2,sum/1]).

total(L)->sum(map(fun({What,N})->shop:cost(What)*N end,L)).
posted on 2012-07-16 19:13  百万军中  阅读(219)  评论(0编辑  收藏  举报