[erlang-questions] Reading, Learning, Confused
Alpár Jüttner
alpar@REDACTED
Sat Jul 19 16:31:12 CEST 2008
Btw. the Erlang Reference Manual says that
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?
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.
>
More information about the erlang-questions
mailing list