Executing boolean expressions on a list

Chris Pressey <>
Tue Mar 18 18:11:20 CET 2003


On Mon, 17 Mar 2003 20:04:13 +0100
"Erik Stenman" <> wrote:

> 
> Chris Pressey wrote:
> > However, evaluating both sides for type correctness means that
> > 'andalso' isn't really very short-circuiting... i.e. the only semantic
> > difference between 'and' and 'andalso' is when the operands have
> > side-effects, right?
> 
> No, both sides are not evaluated for type correctness,
> but if the rhs needs to be evaluated then the result is checked for type
> correctness.

Sorry, brain fart on my part - I swapped 'andalso' with 'orelse' in my
example.

Also, I committed the cardinal sin of not testing it in the shell:

Eshell V5.2  (abort with ^G)
1> true orelse 5.
true
2> false orelse 5.
** exited: {{badarg,5},[{erl_eval,expr,3}]} **
3> true andalso 5.
** exited: {{badarg,5},[{erl_eval,expr,3}]} **
4> false andalso 5.
false

This is the behaviour I expected.

Thanks,
-Chris



More information about the erlang-questions mailing list