[erlang-questions] Comma, semicolon. Aaaaa

masklinn@REDACTED masklinn@REDACTED
Sat Sep 15 17:13:18 CEST 2007

Lone Wolf wrote:
> Hi.
> Well guys, I'm struggling with Erlang syntax.
> Does Erlang has line terminators like C++ or Java?

Not exactly, it has statements terminators (the comma), clause 
terminator (used in pattern matching clauses such as functions, case and 
receive blocks) and it has function definition terminator (the period, 
used to mark the end of the last clause of a function). Oh, and it also 
has keyword terminators for some blocks (case and receive).

> Consider this sinppet:
> ----------
> convert_list_to_c([{Name, {f, F}} | Rest]) ->
>     Converted_City = {Name, {c, (F -32)* 5 / 9}},
>     [Converted_City | convert_list_to_c(Rest)];
> ----------
> Why there is a comma after {Name, {c, (F -32)* 5 / 9}} ?
>   Another snippet and the same question:
> ----------
> format_temps(List_of_cities) ->
>     Converted_List = convert_list_to_c(List_of_cities),
>     print_temp(Converted_List).
> ----------
>   Another one:
> ----------
> foreach(Fun, [First|Rest]) ->
>     Fun(First),
>     foreach(Fun, Rest);
> ----------
>   How to define blocks? using { } for example ? or by using indentation (aka Python) ?
> All these snippets are from Erlang docs.
> Thanks.

a combination of punctuation (the semicolon) and keywords.

In the first snippet, {Name, {c, (F -32)* 5 / 9}} is not a block (it's a 
tuple), the colon indicates the end of the statement `Converted_City = 
{Name, {c, (F -32)* 5 / 9}},`.

The semicolon on the next line indicates the end of the current function 
clause (so there should be another function clause for the same function 
name but a different pattern under it).

In the second snippet, the period at the end of 
`print_temp(Converted_List)` indicates the end of the whole function 
definition (so there should be no other clause under it)

In the third snippet, the semicolon at the end once again indicates the 
end of a function matching clause, so there should be (at least) another 
one under it.

More information about the erlang-questions mailing list