[erlang-questions] head mismatch

Richard A. O'Keefe ok@REDACTED
Wed Feb 11 02:52:02 CET 2015


I suppose I should point out

sum(N) when is_integer(N), N >= 0 ->
    sum(0, N).

sum(L, U) when is_integer(L), is_integer(U), U >= L->
    (U+L)*(U-L+1)//2.

I should also point out that I don't find "sum_acc"
an intention-revealing name.
>>> 
>>> Am I not alllowed to do this 
>>> 
>>> sum(x) -> 
>>>    x ; 
>>> 
>>> sum(x,y) ->
>>>   x + y.   
>>> 
>>> or is there something else missing ?

Can I suggest a strategy for dealing with such questions?

Try it.

-main(q1).
-export([sum/1,sum/2]).
sum(X) -> X; % is this OK?
sum(X, Y) -> X+Y.

Compile it.  The compiler _will_ complain.  It will be the
same "head mismatch" error you saw.

The compiler could be more helpful.  Instead of saying
"head mismatch", it could say
"Error: function sum/1 is followed by a clause for sum/2 but
there is no full stop at the end of sum/1."





More information about the erlang-questions mailing list