我也学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)).