lexi.lambda
2018-4-22 19:29:24

@mflatt I’ve realized the first argument to syntax-local-make-definition-context does something different on Racket 6, which probably reflects what the documentation used to claim. Do you think it is worth changing the Racket 7 expander to emulate the old behavior?


mflatt
2018-4-23 01:25:16

@lexi.lambda As long as the difference isn’t causing a problem, I’m inclined to stick with the new http://behavior.My\|behavior.My read was that the old docs didn’t really explain the old behavior, and that’s partly the reason that it seems ok to me to change and improve it (assuming that the new behavior can count as an improvement).


lexi.lambda
2018-4-23 03:23:06

@mflatt I did end up writing a program that compiled on Racket 7 but failed in CI on Racket 6, so the difference does seem like it could potentially cause a problem. Namely, it seems that chained definition contexts in Racket 6 would introduce their parent context’s bindings when evaluating RHSs with syntax-local-bind-syntaxes, but Racket 7 doesn’t.


lexi.lambda
2018-4-23 03:30:55

The previous docs were not really incorrect on that point. They pretty much described the behavior accurately.


lexi.lambda
2018-4-23 03:32:24

It doesn’t seem like it would be too difficult to restore the behavior in the new expander, either, which would require the restoration of some of that documentation. Fortunately, I think the other changes I made as part of that PR still make sense even if we restore that behavior in the new expander, so the work wouldn’t be wasted.


lexi.lambda
2018-4-23 04:12:13

If we don’t adjust the new expander to perform the behavior of the old expander, we should at least add a @history annotation.