It’s working, but I have no Idea how to show lexical scoping If I have this: (bind x) (ref x) It works like I want it to work.
Also for some reason this works: (let () (bind x) (void)) (ref x) Which is good I guess in some ways, but still weird. It’s good because it gives me a chance to define my own lexical scoping rules, but how do I do that? I think it has something to do with the 2 xs having the same syntax-marks, but I’m not sure. The problem is that I can’t make them have different syntax-marks. To do this I think I would have to use (make-syntax-introducer) instead of syntax-local-introduce, but for some reason that’s not working. If I change the definition of stx-introducer from syntax-local-introduce to (make-syntax-introducer), then it doesn’t work. I don’t really know what I’m doing here, but I think that If I want to have different references in different scopes point to only their own respective definitions (lexical scoping), then I think I would have to use (make-syntax-introducer) instead of syntax-local-introduce. But that’s not working, so then how do I do that? #lang racket (begin-for-syntax (define stx-introducer syntax-local-introduce) ;; (define stx-introducer (make-syntax-introducer)) ) (define-syntax (bind stx) (syntax-case stx () [(bind-1 id) (let ([new-id (stx-introducer #'id)] [id.length (string-length (symbol->string (syntax-e #'id)))]) (syntax-property #`(void) 'sub-range-binders (list (vector new-id 0 id.length new-id 0 id.length))))])) (define-syntax (ref stx) (syntax-case stx () [(ref-1 id) (syntax-property #'(void) 'disappeared-use (list (stx-introducer #'id)))])) (let () (bind x) (void)) (ref x) On May 25, 2014, at 6:00 PM, Robby Findler <ro...@eecs.northwestern.edu> wrote: > Yes. One approach is to expand into a program that never runs but that > has the identifiers in the binding relationships you want check syntax > to show. Another approach is to add properties to your program that > tells check syntax what to draw. You can read about the second > approach here: > > > http://docs.racket-lang.org/tools/Check_Syntax.html?q=check%20syntax#%28part._.Syntax_.Properties_that_.Check_.Syntax_.Looks_.For%29 > > Let us know if you get stuck when you try it! > > Robby > > On Sun, May 25, 2014 at 2:41 PM, Alexander D. Knauth > <alexan...@knauth.org> wrote: >> Is there any way to use syntax properties or anything like that to tell >> DrRacket where to draw the arrows to? >> >> I’m trying to make my own language and I wanted to be able to have DrRacket >> draw the arrows. >> >> Also is there a way to have it draw multiple arrows, so that for example it >> would draw arrows not only to the original definition but also to all of the >> expressions that set! it? >> >> >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users