Erlang语法错误不清楚

Erlang syntax error unclear

我刚开始使用 Erlang。我正在尝试 if 语句。我发现了一种我不理解的特殊行为。

下面的语句确实有效。

some_comp(Arg1) ->

if 
  (cal(Arg1)>50000)->'reached';
true -> 'invalid'
end.

cal(Arg2)->
%% some calculation.

然而,以下显示了 if:

附近的错误语法
some_comp(Arg1) ->
Val=cal(Arg1);
if 
  (Val>50000)->'reached';
true -> 'invalid'
end.

cal(Arg2)->
%% some calculation.

我的问题是为什么会出现错误。没有 if 语句,部分 Val=cal(Arg1) 工作正常

因为表达式应该用,分隔,而不是;

Val=cal(Arg1),
if ...

;if/case/receive 和函数子句的分隔符。