[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Scheme-reports] About the behavior of continuation in top-level begin form

Here is the bug-report link. In that post I use a more redundant example, but the idea is the same.

And here is the mails: 

[Me to Matthew Flatt]
  Thanks for your answer! But I am more confused: 
  1 Both the newest version of Chez/Ypsilon Scheme give [Do you catch me?] output. 
  2 Both of them claim that their implementation confirm to the newest r6rs standard.
  3 Are they all wrong? Or is Racket intend not to compatible with r6rs in this point(If the answer is 'yes', what're the benefits)?

[Matthew Flatt to Me]
  I don't think that R6RS is clear on the point of splicing `begin's or
on the continuation of a module body. Even within what is specified,
it's possible that Racket's R6RS implementation doesn't handle `begin'
spliciing according to the standard.

Meanwhile, as you say, `racket' is a different language, and we've
chosen a simpler and more consistent rule for `begin' splicing (i.e.,
always splice). The `racket' language also takes advantage of prompts
to enable local reasoning about continuations in a module (i.e., you
don't have to wonder about the continuation of a module body's
evaluation, which is difficult to specify).

2013/4/18 張書瀚 <zrqsmcx@x>
Hi everyone! 

Here is the source code:

(define cc #f)
(begin (call/cc (lambda(k) (set! cc k))) (display "Will you catch me?\n"))

In newest Racket, (cc) => nothing
In newest Chez/Ypsilon (cc) => Will you catch me?\n

I asked an expert about this, and he said that Chez/Ypsilon is right.

Then I post a bug report to Racket, Matthew Flatt said 
[R6RS isn't clear on the point of splicing `begin's or 
on the continuation of a module body.]

Then I checked r7rs-small-draft-9, I believe there is some ambiguity here.
What do you think about this problem? 
Actually I am a Scheme newbie, I apologize if this problem doesn't make any sense.

Scheme-reports mailing list