Jammy Lee
Jammy Lee

Reputation: 1516

why erlang not supporting expressions like : mysum(32)(1)

I am new in Eralng . get a little query about applying functions
assumming got a funciton defined :

mysum(X) -> fun(Y)-> X + Y end.

then try to calling like this

mysum(32)(332) 

getting error

* 1: syntax error before: '('

so I had to

apply(mysum(32),[333])

or

M = mysum(32), M(333)

but I would like to know a little bit more , why it is not supporting , what is the disadvantage

Upvotes: 0

Views: 112

Answers (1)

Pascal
Pascal

Reputation: 14042

As you expected, mysum return a function. you must enclose the evaluation inside parenthesis to satisfy the erlang parser:

(mysum(32))(332)

this spelling is obviously not ambiguous.

Your expression seems not ambiguous because you know that mysum(32) is a function, but the types are solved at run time in erlang, so the parser has no idea of what is mysum(32), it is expecting some help here to know what it has to do: the parenthesis, the apply or the intermediate variables, but it could be an operator or a separator.

Upvotes: 6

Related Questions