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

Reply via email to