Yes, you're right. I am trying to write&test various examples to fully understand what continuation is.
I believe that Racket authors didn't intentionally be special at the beginning. I humbly think that if the standard make this point more clear, just like the behavior in lambda/let, there will be less useless&confusing difference. Why not? 2013/4/18 Jim Rees <[email protected]> > Correct me if I'm mistaken, but I am assuming your "source code" was typed > at a REPL when you did your test with racket & others. I believe the > issue at hand then, is REPL internals. > > After thinking about this a lot, I agree with you that Racket is simply > doing it wrong. Their claim that they're just splicing the begin form > does not excuse the fact that they're drastically mutating the meaning of > the continuation during the first pass. > > If (begin 1 2 3) printed 1, 2, and 3, then at least I would understand > that they were splicing the forms into separate repl passes -- that typing > (begin 1 2 3) was the same as typing 1, 2, and 3 on separate lines -- I'd > almost buy that. But they're not printing all 3 items, so the claim is > inconsistent. > > They're Racket, not Scheme, so there's no point in pressing the matter -- > but they're still wrong. > > > > > On Wed, Apr 17, 2013 at 4:03 PM, 張書瀚 <[email protected]> wrote: > >> Thanks, Jim! Actually, I already know that. >> I tried to put these expressions in let, lambda ... , and in >> these situations, there's no ambiguity. >> But the problem of begin, as I said before, is still there. >> I don't think it's good to deliberately leave that behavior unspecified >> in the standard, so I post it here (for me, it creates unnecessary >> misunderstandings). >> so, what do think of it ;D ? >> >> >> 2013/4/18 Jim Rees <[email protected]> >> >>> >>> If you want a more predictable effect, do this instead: >>> >>> (define cc #f) >>> (define (f) (call/cc (lambda (k) (set! cc k))) (display "Will you catch >>> me?\n")) >>> (f) >>> (cc) >>> >>> >>> >>> >>> >>> On Wed, Apr 17, 2013 at 12:56 PM, 張書瀚 <[email protected]> wrote: >>> >>>> Here is the bug-report link. In that post I use a more redundant >>>> example, but the idea is the same. >>>> http://bugs.racket-lang.org/query/?cmd=view&pr=13701 >>>> >>>> And here is the mails: >>>> >>>> [Me to Matthew Flatt] >>>> Hello! >>>> 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 張書瀚 <[email protected]> >>>> >>>>> Hi everyone! >>>>> >>>>> Here is the source code: >>>>> >>>>> (define cc #f) >>>>> (begin (call/cc (lambda(k) (set! cc k))) (display "Will you catch >>>>> me?\n")) >>>>> (cc) >>>>> >>>>> 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 >>>> [email protected] >>>> http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports >>>> >>>> >>> >> >
_______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
