On Jan 20, 2014, at 4:40 PM, Patrick Boe wrote: > Thanks for taking a look, John. Here's a reduced version. I don't think > there's any missing namespace information here at the time of evaluation, > since the syntax is being manipulated in a macro, but I am relatively new to > using namespace anchors, so I could be wrong. It seems to me like the syntax > is being expanded either more or less fully than the annotator wants. > > #lang racket > (require (for-syntax racket/format gui-debugger/annotator)) > (define-syntax fail-to-annotate > (lambda (stx) > (let-values > ([(annotated _) > (annotate-stx (expand (cadr (syntax-e stx))) '_ '_ '_ )]) > annotated))) > (fail-to-annotate (string-append "hi" "lo"))
Right... I would say "less." In particular, it appears to me that the syntax here is not fully expanded. However, this code is also setting off my "border-crossing" alarms. I've been working with the racket syntax since... 1997? ... and so it embarrasses me not to be able to give you a more definitive answer, but I think that, to make a long story short, you don't want to put calls to annotate-stx inside a macro. Instead, I think you probably want to implement your debugger the way the debugger does---as a global transformation on fully-expanded syntax. Put differently: doing it this way looks to me like it's straining the built-in structure of the macro system. You can probably move it toward what you want, but it's probably not ever going to work really nicely. Sorry for not giving you a more definitive answer, John Clements > > > > On Mon, Jan 20, 2014 at 2:18 AM, John Clements <[email protected]> > wrote: > > On Jan 16, 2014, at 4:05 PM, Patrick Boe wrote: > > > I am trying to learn how to use the DrRacket debugger's annotate function. > > My ultimate aim is to build a REPL that you can execute from within a > > closure and have access to everything that's in scope. (see my > > StackOverflow question on that topic and Greg Hendershott's well-researched > > answer) For the time being, I'm just trying to explore how the annotate > > function works. You can see my first exploratory attempt at using it, and > > the results, here. > > > > The error, which is happing inside of the annotator, seems to arise when it > > tries to pattern-match he application of string-append. The matcher is > > looking for a #%plain-app and the expanded syntax I'm presenting to it > > contains an #%app. I'm unsure if I should be expanding the syntax > > differently so it comes out as a #%plain-app or if there's something else > > I'm doing wrong to produce the syntax I'm feeding into the annotator. Does > > anybody see where my error is? > > Sadly, I don't have a browser right now, so I can't take a look at your > links. Perhaps you can reduce it to a ten-line example? Could the solution > have something to do with namespace anchors? > > John Clements > > > > > I originally posted this question to SO, but Greg suggested I might have > > more luck with it here. > > > > Best, > > Patrick > > > > PS - if you're reading this, thanks the great PLAI class last year, SK! > > ____________________ > > Racket Users list: > > http://lists.racket-lang.org/users > > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users

