Le 19/04/2019 à 19:31, Albert Y. C. Lai a écrit :

I am late to this discussion but here is my solution.

This is really just story-telling to end-users.

The real story you want to tell everyone is this: "x && y && z && t" means Scheme's "(and x y z t)", and it means you try the sequence from left to right, stopping at the first incident of "false".
/.../
As many of you have observed, it doesn't matter, a compiler writer already knows it's "(and x y z t)" and generates the correct code and not bother to split hair.

Very, ehm, interesting methodology...

I suspect that you missed that part of the discussion where people discussed parsing. I don't know if you ever taught compilation, but imagine that your students ask you:

HOW "x && y && z && t" is transformed into "(and x y z t)" ?

Will your answer be:

it doesn't matter, a compiler writer already knows it's "(and x y z t)" and generates the correct code and not bother to split hair

Everybody will be happy. Bon courage.

Jerzy Karczmarczuk