[racket-dev] confused by output of macro stepper -- ooh, I see why! --> UI suggestion.

From: John Clements (clements at brinckerhoff.org)
Date: Tue Feb 14 19:57:16 EST 2012

I was trying to investigate the expansion behavior of a piece of code for which I just submitted a bug, and used the macro stepper.  I was confused by what I saw. Here's the program:

#lang racket

(define (takes-kwd-arg #:kwd-arg opt)
  (not opt))

(let ([named-val (takes-kwd-arg #:kwd-arg #t)])

I ran the macro stepper  button, and got this as the result of the step:

(module anonymous-module racket
   (define (takes-kwd-arg #:kwd-arg opt) (not opt))
   (let ([named-val
          (let ((named-val takes-kwd-arg) (temp6 #t))
            (if (variable-reference-constant? (#%variable-reference takes-kwd-arg5))
              (takes-kwd-arg3 temp6)
              ((checked-procedure-check-and-extract struct:keyword-procedure named-val keyword-procedure-extract '(#:kwd-arg) 2)
               (list temp6))))])

There are a bunch of identifiers without obvious binding instances here: for instance, "takes-kwd-arg3".  I'm guessing that these identifiers have binding information that's not shown by the macro stepper. 

What was much *more* confusing, though, was that when I turned *off* "Hide Library Syntax", the bottom half suddenly turned into:

(module anonymous-module racket
   (printing-module-begin (define (takes-kwd-arg #:kwd-arg opt) (not opt)))
   (printing-module-begin (let ([named-val (takes-kwd-arg #:kwd-arg #t)]) named-val))))

... which suggested that "hiding Library Syntax" caused *more* detail to be shown.

I've been mulling this over, and finally realized that when the box was checked, I was seeing step 1 of 1. When the box was unchecked, I was seeing only the first of several steps. 

Can I suggest that it might be clearer what's going on if the macro stepper displays something like "step <n> of <n>" somewhere? This might have clued me in to my oversight.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4624 bytes
Desc: not available
URL: <http://lists.racket-lang.org/dev/archive/attachments/20120214/bc2fdf21/attachment.p7s>

Posted on the dev mailing list.