Hi Marc!
Does Gambit evaluate left-to-right order always or only generally?
Thanks, Adam
Afficher les réponses par date
Execution order is arbitrary. The interpreter and compiler don’t use the same ordering. The interpreter tends to be mostly left-to-right, but don’t count on it.
Marc
On Nov 12, 2017, at 4:19 PM, Adam adam.mlmb@gmail.com wrote:
Hi Marc!
Does Gambit evaluate left-to-right order always or only generally?
Thanks, Adam
Wow.
Can you give an actual code exampe where compiled (or interpreted) code not does left to right?
I think all I observed in practice in the past was left to right.
Adam
2017-11-13 21:45 GMT+08:00 Marc Feeley feeley@iro.umontreal.ca:
Execution order is arbitrary. The interpreter and compiler don’t use the same ordering. The interpreter tends to be mostly left-to-right, but don’t count on it.
Marc
On Nov 12, 2017, at 4:19 PM, Adam adam.mlmb@gmail.com wrote:
Hi Marc!
Does Gambit evaluate left-to-right order always or only generally?
Thanks, Adam
Left as an exercice to the reader…
Marc
On Nov 13, 2017, at 10:37 AM, Adam adam.mlmb@gmail.com wrote:
Wow.
Can you give an actual code exampe where compiled (or interpreted) code not does left to right?
I think all I observed in practice in the past was left to right.
Adam
2017-11-13 21:45 GMT+08:00 Marc Feeley feeley@iro.umontreal.ca: Execution order is arbitrary. The interpreter and compiler don’t use the same ordering. The interpreter tends to be mostly left-to-right, but don’t count on it.
Marc
On Nov 12, 2017, at 4:19 PM, Adam adam.mlmb@gmail.com wrote:
Hi Marc!
Does Gambit evaluate left-to-right order always or only generally?
Thanks, Adam
Evaluation is always separated between procedure calls though, so the undefined order only regards specifically the order in which the operator and arguments are evaluated, right?
( E.g.:
For the code (A (B C D) (E F G)), let's call (B C D) X1 and (E F G) X2, here: While the evaluation order within the block B C D, and within the block E F G, and within the block A X1 X2, is undefined, the internal evaluation of X1 and X2 is never mixed so that you'd get an evaluation order B to F to D, right?
Any mix where A, X1, X2 are kept separate could happen thoug, e.g. A, C, B, D, F, E, G or F, E, G, D, B, C, A. )
2017-11-14 10:03 GMT+08:00 Marc Feeley feeley@iro.umontreal.ca:
Left as an exercice to the reader…
Marc
On Nov 13, 2017, at 10:37 AM, Adam adam.mlmb@gmail.com wrote:
Wow.
Can you give an actual code exampe where compiled (or interpreted) code
not does left to right?
I think all I observed in practice in the past was left to right.
Adam
2017-11-13 21:45 GMT+08:00 Marc Feeley feeley@iro.umontreal.ca: Execution order is arbitrary. The interpreter and compiler don’t use
the same ordering. The interpreter tends to be mostly left-to-right, but don’t count on it.
Marc
On Nov 12, 2017, at 4:19 PM, Adam adam.mlmb@gmail.com wrote:
Hi Marc!
Does Gambit evaluate left-to-right order always or only generally?
Thanks, Adam
In Scheme it is allowed that the oder of evaluation of A, B, C, …, G is permuted arbitrarily. The calls (B …) and (E …) can also happen in any order, but obviously after their respective arguments are evaluated. And the call (A …) can only happen after both calls (B …) and (E …).
It is hard for me to say if this ordering liberty is used by the compiler. So don’t rely on any particular ordering.
Marc
On Nov 18, 2017, at 3:32 AM, Adam adam.mlmb@gmail.com wrote:
Evaluation is always separated between procedure calls though, so the undefined order only regards specifically the order in which the operator and arguments are evaluated, right?
( E.g.:
For the code (A (B C D) (E F G)), let's call (B C D) X1 and (E F G) X2, here: While the evaluation order within the block B C D, and within the block E F G, and within the block A X1 X2, is undefined, the internal evaluation of X1 and X2 is never mixed so that you'd get an evaluation order B to F to D, right?
Any mix where A, X1, X2 are kept separate could happen thoug, e.g. A, C, B, D, F, E, G or F, E, G, D, B, C, A. )
2017-11-14 10:03 GMT+08:00 Marc Feeley feeley@iro.umontreal.ca: Left as an exercice to the reader…
Marc
On Nov 13, 2017, at 10:37 AM, Adam adam.mlmb@gmail.com wrote:
Wow.
Can you give an actual code exampe where compiled (or interpreted) code not does left to right?
I think all I observed in practice in the past was left to right.
Adam
2017-11-13 21:45 GMT+08:00 Marc Feeley feeley@iro.umontreal.ca: Execution order is arbitrary. The interpreter and compiler don’t use the same ordering. The interpreter tends to be mostly left-to-right, but don’t count on it.
Marc
On Nov 12, 2017, at 4:19 PM, Adam adam.mlmb@gmail.com wrote:
Hi Marc!
Does Gambit evaluate left-to-right order always or only generally?
Thanks, Adam