[erlang-questions] illegal guard expression for IF illegal guard expression for "if"

CGS cgsmcmlxxv@REDACTED
Fri Dec 2 10:50:49 CET 2011


Hi,

To put in simple words for better understanding, you can have only 
constant variables withing the guard expression. That means, in your 
case, if in the first branch you use again random:uniform(), the second 
branch condition can report an inaccurate result.

Alternatively, you can use case statement:

case (random:uniform()<0.5) of
      true -> good;
      false -> bad
end

I hope this answer will help you.

CGS



On 12/02/2011 10:30 AM, Barco You wrote:
> Why does the following expression got "illegal guard expression" when 
> compiling:
> X = 0.5,
> if
>     random:uniform() < X ->      %error reported for this line
>            good;
>     true ->
>            bad
> end.
>
> But if I change it to following expression, it's ok:
> X = 0.5,
> Ran = random:uniform(),
> if
>     Ran < X ->
>            good;
>     true ->
>            bad
> end.
>
> BRs,
> Barco
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20111202/1f7db582/attachment.htm>


More information about the erlang-questions mailing list