Erlang 在此模块代码中我错在哪里

Erlang 在此模块代码中我错在哪里,erlang,Erlang,我已经用下面的代码创建了一个模块 -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 er

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

 -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)将返回所需的结果。
但我不知道我在哪里犯了这个错误。请帮我做这个

并请帮助我了解出口声明中的/2是什么。

检查此链接

/export语句中的2表示函数sum的参数数。

检查此链接


/export语句中的2表示函数sum的参数数。

第(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是函数的arity,也就是它需要的参数数。因此,在您的例子中,要导出的函数是sum/1。

第(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是函数的arity,也就是它需要的参数数。因此,在您的例子中,要导出的函数是sum/1