Oh yes, that was it. Robby
On Sun, Apr 29, 2012 at 5:14 PM, Ryan Culpepper <[email protected]> wrote: > I think the point of 'begin0' is that it handles multiple values efficiently > (ie, more so than a heap-allocated list). The expansion of 'begin0' would > have to be something like > > (call-with-values (lambda () e1) > (lambda result (begin e2 (apply values result)))) > > since in general the number of values produced by e1 is not known at > expansion time. > > Ryan > > > > On 04/29/2012 03:54 PM, Sam Tobin-Hochstadt wrote: >> >> Presumably we could remove it from fully-expanded code and then the >> compiler could re-transform this: >> >> (let ([x e]) e0 ... x) >> >> into some bytecode that uses begin0, which would simplify the job of >> tools that process expanded code without changing performance. >> >> On Sun, Apr 29, 2012 at 5:07 PM, Robby Findler >> <[email protected]> wrote: >>> >>> We debated this long ago and I think the conclusion was that we could >>> get a little more performance by including it at the bytecode level >>> that seemed worth having (the precise details (like if we had a >>> program where that mattered) escape me). >>> >>> Robby >>> >>> On Sun, Apr 29, 2012 at 1:03 PM, Danny Yoo<[email protected]> wrote: >>>> >>>> One question that I had stowed away a long time ago: why is begin0 >>>> part of the language? It seems redundant in the face of having 'let' >>>> to capture a value that we want to return at the end of some sequence. >>>> ____________________ >>>> Racket Users list: >>>> http://lists.racket-lang.org/users >>> >>> >>> ____________________ >>> Racket Users list: >>> http://lists.racket-lang.org/users >> >> >> >> > ____________________ Racket Users list: http://lists.racket-lang.org/users

