Michael Ballantyne
Michael Ballantyne
An example that breaks this: ``` #lang racket (define x #t) (define-match-expander m (syntax-rules () [(_ arg) (? (let ([arg #f]) (if x string? number?)))])) (match "foo" [(m x) (void)])...
@AlexKnauth your example works correctly either way, because the relevant use-site scope is created for the expansion of m, and only that created for ~m would be removed by my...
Here's another example of what's broken, in all versions: 6.12, 7.0, and mine. ``` #lang racket (module a racket (require racket/provide (for-syntax racket/provide-transform racket/function)) (begin-for-syntax (define f (curryr string-append "*")))...
@rmculpepper I would refine your description a little and say that use-site scopes are necessary whenever use-site identifiers don't have other scopes that syntax literals within the macro lack. So...
Could you share your CPS match-define? On Thu, Aug 23, 2018, 9:50 AM Ryan Culpepper wrote: > Thanks @yjqww6 and @michaelballantyne > for the links and explanation. I'm > still...
I think your understanding is correct; the difference is that the rhs of the match clause also gets the use-site scope because it's passed as the continuation. In the `match-define`...
I don't see a way to take advantage of the CPS parallel. The CPS version escapes the problem of binders that splice by instead passing along all the references they...
I've updated this PR with a more careful fix for require, match, and syntax-parse expanders, only using `syntax-local-identifier-as-binding` on the splicing binding positions. In `syntax-parse` I also had to apply...
To my understanding, `syntax-local-introduce` is not a reliable way to break hygiene in Racket; thus it seems like a bad idea to document `syntax_meta.flip_introduce` as for this purpose in Rhombus....
> After some more thinking, I’m not sure the Racket example really corresponds to the Rhombus counterpart either. Racket let doesn’t work like Rhombus let in that the former creates...