1

我用下面的代码创建了一个模块

 -module('calc') .
 -export([sum/2]) . (0)

 sum(L) -> sum(L,0);   (1)
 sum([],N) -> N;   (2)
 sum([H|T], N) -> sum(T, H + N) (3) .

在 shell 中,当我编译时它返回如下错误

 calc.erl:5: head mismatch
 calc.erl:2: function sum/2 undefined
 error

根据我对书中的理解,1 子句将收到列表并将其传递给 (3)。然后(3)将返回所需的结果。
但我不知道我在哪里犯了错误。请帮助我。

And please help me to understand what is /2 in export statement.

4

2 回答 2

7

第 (1) 行有语法错误。函数 sum/1 和 sum/2 不同,因此您的代码应如下所示:

sum(L) -> sum(L,0). %% notice the . instead of ;

sum([],N) -> N;
sum([H|T], N) -> sum(T, H + N).

/2 是你的函数的数量,即它需要的参数数量。因此,在您的情况下,您要导出的函数是 sum/1。

于 2012-05-15T10:14:37.477 回答
0

检查此链接

在 Erlang 中编写一个计算列表中整数和的函数

导出语句中的 /2 表示函数 sum 的参数数量。

于 2012-05-15T10:04:55.080 回答