<span id="mailbox-conversation">Out of curiosity, why would removing the prompt tag change the behavior?</span><br><br><div class="gmail_quote"><p>On Mon, Mar 10, 2014 at 10:50 PM, Matthew Flatt <span dir="ltr"><<a href="mailto:mflatt@cs.utah.edu" target="_blank">mflatt@cs.utah.edu</a>></span> wrote:<br></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><p>I think this is a compiler bug, where the compiler is changing
<br><br>   (let ([a (cons 1 2)])
<br>     (call-with-composable-continuation (λ (k) (set! g k)) p)
<br>     a)
<br><br>to
<br><br>   (begin
<br>     (call-with-composable-continuation (λ (k) (set! g k)) p)
<br>     (cons 1 2))
<br><br>so you get a new pair each time the continuation is called.
<br><br>I will need to fix the compiler so that it doesn't move allocation past
<br>an expression that could capture a continuation.
<br><br>At Mon, 10 Mar 2014 21:44:19 -0400, Spencer Florence wrote:
<br>> For some reason the below program returns false:
<br>> 
<br>> #lang racket
<br>> (define g #f)
<br>> (define p (make-continuation-prompt-tag))
<br>> (define (t)
<br>>   (let ([a (cons 1 2)])
<br>>     (call-with-composable-continuation (λ (k) (set! g k)) p)
<br>>     a))
<br>> (call-with-continuation-prompt t p)
<br>> (eq? (call-with-continuation-prompt g p)
<br>>        (call-with-continuation-prompt g p))
<br>> 
<br>> This happens with call/cc as well. From my understanding a should be
<br>> allocated before the continuation is captured, so the two calls to g should
<br>> return the same cell. If I remove the prompt tag the program returns true.
<br>> 
<br>> Anyone have any clue whats going on or how to fix?
<br>> 
<br>> --Spencer
<br>> ____________________
<br>>   Racket Users list:
<br>>   http://lists.racket-lang.org/users
<br></p></blockquote></div><br>