[erlang-questions] Order of evaluation of guards

Martin Koroudjiev mrtndimitrov@REDACTED
Mon Jan 5 10:08:27 CET 2015


Yes, this looks much better. I just wanted to figure out how guards are
evaluated.

On 1/5/2015 11:04 AM, Danil Zagoskin wrote:
> Alternatively, you may split complex logic to several clauses:
> f(N, M) when N > 100, M > 100 -> % Both too large
>   not_cool;
> f(N, M) when N < 100, M < 100 -> % Both too small
>   not_cool;
> f(N, M) when N > 0, M > 0 -> % Both are greater than 0, after previous
> clauses exactly one of them greater than 100
>   cool;
> f(_, _) ->
>   not_cool.
>
> On Mon, Jan 5, 2015 at 11:51 AM, Martin Koroudjiev
> <mrtndimitrov@REDACTED <mailto:mrtndimitrov@REDACTED>> wrote:
>
>     Hello,
>
>     First of all - Happy New Year!
>
>     Suppose we have a function that accepts 2 integers and we want to
>     react
>     only when both integers are greater than 0 and one of them is less
>     than 100:
>
>     I tried:
>     (dilbert@REDACTED)1> F = fun(N, M) when N > 0, M > 0, N < 100; M
>     < 100
>     -> cool; (_, _) -> not_cool end.
>     #Fun<erl_eval.12.106461118>
>     (dilbert@REDACTED)2> F(1,2).
>     cool
>     (dilbert@REDACTED)3> F(1,200).
>     cool
>     (dilbert@REDACTED)4> F(0,200).
>     not_cool
>     (dilbert@REDACTED)5> F(0,50).
>     cool
>
>     The last is not correct.
>     What is the order of evaluation of the guards? Sadly parentheses
>     are not
>     allowed in guards.
>
>     Best regards,
>     Martin
>
>     _______________________________________________
>     erlang-questions mailing list
>     erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
>     http://erlang.org/mailman/listinfo/erlang-questions
>
>
>
>
> -- 
> Danil Zagoskin | z@REDACTED <mailto:z@REDACTED>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150105/49393a38/attachment.htm>


More information about the erlang-questions mailing list