At Fri, 24 Feb 2017 16:02:45 -0300, Gustavo Massaccesi wrote:
> *** Chez may reorder expressions.
> 
> (car (list (display 1) (display 2)))  ;==> 21#<void>
> 
> I think this is ok in RNRS and Chez, but it may cuase a problem for a
> program translated directly from Racket. I think that all the reorders
> are in the optimization phase, but I'm not sure.

Right --- The "schemify" pass at

  https://github.com/mflatt/not-a-box

rewrites applications for fully expanded Racket programs. It uses
nested `let`s as necessary to enforce left-to-right evaluation (and the
optimizer surely preserves that ordering).

A `let` form with multiple binding clauses similarly has to be
rewritten to nested `let`s`. There's a subtlety related to variable
allocation and potential continuation capture, but the rewrite pass
addresses that.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-dev/20170224201600.ECDD465008A%40mail-svr1.cs.utah.edu.
For more options, visit https://groups.google.com/d/optout.

Reply via email to