[erlang-questions] Core Erlang questions

Robert Virding rvirding@REDACTED
Fri Oct 17 23:42:05 CEST 2008

2008/10/17 Richard Carlsson <richardc@REDACTED>

> Ulf Wiger wrote:
> > 2008/10/16 Robert Virding <rvirding@REDACTED>:
> >> There is a specific reason for the Erlang compiler to return code like
> that.
> >> In Erlang the order of evaluation is defined to be left-to-right
> >
> > Where is this defined?
> >
> > I believe (too tired to check) that the Barklund spec left the
> > evaluation order undefined, with the proviso that no possible
> > evaluation order should leave variables unbound when used.
> As far as I can remember, around the time when Barklund wrote that
> spec it was decided that Erlang should have a fixed evaluation order,
> so that there would never be a situation where a program would behave
> slightly different (e.g., a process sending messages in a different
> order, or a different exception being thrown) on an alternative
> implementation. I think some minor things in the compiler were changed
> at that time, to conform to the left-to-right principle. It does
> restrict a bit what the compiler can do, though: only safe expressions
> (free from side effects and exceptions) can be reordered at all.

Another reason to explicitly define evaluation order is that you also define
where variables are visible and who binds them and who tests them. This can
get *very* tricky in the general case. Fortunately people usually don't
write that tricky and convoluted code. :-)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20081017/11c76c55/attachment.htm>

More information about the erlang-questions mailing list