Quantcast
Viewing all articles
Browse latest Browse all 4

Answer by rvirding for Erlang getting error ** 1: syntax error before: '->' **

The straight answer is that in a module definition file you have attributes, like -module()., -export(). etc, and function definitions, while in the shell you enter expressions to be evaluated. A function definition is not an expression.

If you want to define a local, temporary function in the shell you need to use fun's as @DanielLuna has shown. These are really anonymous unnamed functions so calling themselves recursively is a pain, which is not specific to Erlang but common to all anonymous functions.

N.B.

Sum = fun([], _) -> 0; ([H | T], F) -> H + F(T, F) end.

in shell does NOT define a function called Sum but defines an anonymous function and binds the variable Sum to it.

This is also why the only thing you can do in a module is define functions and not expressions to be evaluated when the module is loaded.


Viewing all articles
Browse latest Browse all 4

Trending Articles