Блочное выражение

Блочные выражения это выражения, объединённые в блок begin ... end. То же: block expression.

Блочные выражения выглядят в общем случае так:

begin
    Выражение1,
    Выражение2,
    ...
    ВыражениеN
end

Такой блок удобен для группировки связанных между собой выражений. Он, конечно, сам тоже является выражением. Результат его работы — тот же, что и у последнего выражения (ВыражениеN).

Рассмотрим пример:

main() -> 
    F = begin 
        A = 1,
        B = 1, 
        C = A+B,
        D = B+C,
        E = C+D,
        D+E
    end,
    io:format("~p~n", [C]),
    io:format("~p~n", [F]).

Эта программа выведет 2 и 8. 8 привязывается к F как результат работы блочного выражения. 2 привязалась к переменной C внутри блочного выражения. Потом (вне блока) эта привязанность сохраняется.

Про это лучше не забывать, что у begin ... end нет собственной области видимости. В нашем примере можно привязать единицу к A до блочного выражения. Результат будет тот же.

...
A = 1,
F = begin 
    B = 1, 
...

© Алексей Карманов, 2024.