[erlang-questions] Reading, Learning, Confused
Alpár Jüttner
alpar@REDACTED
Sat Jul 19 17:22:57 CEST 2008
> As of Erlang 5.5/OTP R11B, short-circuit boolean expressions are
> allowed in guards. In guards, however, evaluation is always
> short-circuited since guard tests are known to be free of side
> effects.
> (Section 6.14, Short-Circuit Boolean Expressions)
>
> Something is wrong here, isn;t it?
I mean
* What does the word "however" mean here? Does it mean that if
they are not in a guard, orelse/andelse might be non
short-circuited?
* How does the freedom from side effects are related to the
short-circuited evaluation?
Regards,
Alpar
>
> Regards,
> Alpar
>
> On Sat, 2008-07-19 at 06:50 -0700, Lev Walkin wrote:
> > Sean Allen wrote:
> > > by a small bit of example code in Programming Erlang related to guards
> > > and short circuit booleans:
> > >
> > > f(X) when (X == 0) or (1/X > 2) ->
> > > ...
> > >
> > > g(X) when (X == 0) orelse ( 1/X > 2) ->
> > > ...
> > >
> > > The guard in f(X) fails when X is zero but succeeds in g(X)
> > >
> > > Can someone explain why?
> >
> >
> > Sean,
> >
> > The thing is, "or" does not short-circuit evaluation when left side
> > succeeds, whereas "orelse" does. Same short-circuit logic is
> > behind the differences between "and" and "andalso".
> >
> > Actually, the very book you read explains these differences and warns
> > about caveats a couple pages later (or earlier). Don't stop reading.
> >
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions
More information about the erlang-questions
mailing list