<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I'm guessing a little bit but I think its because the `phases' macro
    is expanded at phase 2 before `set-compile' is called. If you put
    (set-compile) before the definition of `phases' then you get '(1 2).<br>
    <br>
    On 01/17/2012 12:06 AM, Veer Singh wrote:
    <blockquote
cite="mid:[email protected]m"
      type="cite">
      <div><br>
      </div>
      <div>
        <div>Why macro call (phases) produces '(1 0) and not '(1 2) ?</div>
      </div>
      <div><br>
      </div>
      <div><br>
      </div>
      <div>
        <div>(module mod1 racket</div>
        <div>(require (for-syntax syntax/parse))</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;;"mod-compile.rkt"))</div>
        <div>(require (for-syntax&nbsp;</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (for-syntax syntax/parse racket )))</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;"mod-compile.rkt")))</div>
        <div>(provide set-compile phases)</div>
        <div><br>
        </div>
        <div>&nbsp; ;For phase 1</div>
        <div>&nbsp; (begin-for-syntax</div>
        <div>&nbsp; &nbsp; (define cnt 0)</div>
        <div>&nbsp; &nbsp;&nbsp;</div>
        <div>&nbsp; (define (store! v)</div>
        <div>&nbsp; &nbsp; (set! cnt v)))</div>
        <div>&nbsp;&nbsp;</div>
        <div>&nbsp; ;For phase 2</div>
        <div>&nbsp; (begin-for-syntax (begin-for-syntax</div>
        <div>
          &nbsp; &nbsp; (define cnt 0)</div>
        <div>&nbsp; &nbsp;&nbsp;</div>
        <div>&nbsp; (define (store! v)</div>
        <div>&nbsp; &nbsp; (set! cnt v))))</div>
        <div>&nbsp;&nbsp;</div>
        <div>&nbsp; ;;set the value of "cnt" in phase1 and phase2</div>
        <div>&nbsp; (define-syntax (set-compile stx)</div>
        <div>&nbsp; &nbsp; (syntax-parse stx</div>
        <div>&nbsp; &nbsp; &nbsp; [(_) #'(begin</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(begin-for-syntax</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; in "cnt" in phase 1 cnt=1</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(store! 1)&nbsp;</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(begin-for-syntax</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; in "cnt" in phase 2 cnt=2</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(store! 2)))</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'done)]))</div>
        <div>&nbsp;&nbsp;</div>
        <div><br>
        </div>
        <div>&nbsp; ;;return the value of cnt in phase1 and phase2</div>
        <div>&nbsp; (define-syntax (phases stx)</div>
        <div>&nbsp; &nbsp;&nbsp;</div>
        <div>&nbsp; &nbsp; ;phase2 ???</div>
        <div>&nbsp; &nbsp; (define-syntax (phase2 stx) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
        <div>&nbsp; &nbsp; &nbsp; (syntax-parse stx</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; [(_) (with-syntax ([p cnt])</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#'p)]))</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
        <div>&nbsp; &nbsp; ;phase1 &nbsp; &nbsp;</div>
        <div>&nbsp; &nbsp; (syntax-parse stx</div>
        <div>&nbsp; &nbsp; &nbsp; [(_) (with-syntax ([p1 cnt]</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[p2 (phase2)])</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#'(list p1 p2))]))</div>
        <div>&nbsp;&nbsp;</div>
        <div>&nbsp; (set-compile)</div>
        <div>&nbsp; (phases)</div>
        <div>&nbsp; ;produces (list 1 0), but why not (list 1 2)&nbsp;</div>
        <div>&nbsp;&nbsp;</div>
        <div>)</div>
        <div><br>
        </div>
      </div>
      <div><br>
      </div>
      <div>Thanks</div>
      <div><br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">____________________
  Racket Users list:
  <a class="moz-txt-link-freetext" href="http://lists.racket-lang.org/users">http://lists.racket-lang.org/users</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>