我创建了一个包含以下代码的模块
-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.
答案 0 :(得分: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是你的函数的 arity ,也就是它所需的参数数量。因此,在您的情况下,您要导出的函数是sum / 1.
答案 1 :(得分:0)
检查此链接
Write a function that calculate the sum of integers in a list in Erlang
export语句中的/ 2表示函数sum的参数个数。