At Mon, 23 Mar 2020 01:45:40 -0700 (PDT), Yongming Shen wrote: > I tried the example you gave for my first question and it resulted in an > error.
Oops --- you're right. I lost track of what we try to make work at the top level. > I think this is because `(define-values (x) ...)` expands `...` without the > top-level-bind-scope, even when expand-context-to-parsed? is #t (according > to expander/expand/top.rkt). Is this a bug? Since the behavior goes far back, I think this is the behavior that we decided to settle for. > Related to your answer to my second question, `define-syntaxes` similarly > does not add the top-level-bind-scope when expanding `...`. Does this mean > that even for `define-syntaxes`, `...` won't use the top-level-bind-scope > binding(s) after all? The way that evaluation, binding, and expansion are interleaved means that a `define-syntaxes` macro can refer to itself in expansions. The binding of an identifier in a macro template is resolved after the macro is applied. The difference with `define` is that the right-hand side is expanded/compiled before `define` binds. > A little bit off-topic, in the definition of define-values (in > expander/expand/top.rkt), there is `(define-match m s ...)`, but for > define-syntaxes it is `(define-match m disarmed-s ...)`. Is this difference > significant? Or does define-match not care whether `s` or `disarmed-s` is > used? Using `disarmed-s` in the definition of `define-values` is probably a better idea, and I'll look into that more. It think it turns out not to matter, normally, because `define-values` is transparent to syntax arming via `syntax-arm` with a #t second argument (which is what the expander does). But it would be better to not rely on that. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/5e78c215.1c69fb81.5b855.0569SMTPIN_ADDED_MISSING%40gmr-mx.google.com.