[squeak-dev] Shift/reset old news
Levente Uzonyi
leves at elte.hu
Wed May 11 19:13:53 UTC 2011
On Wed, 11 May 2011, Frank Shearar wrote:
> On 2011/05/11 15:36, Tony Garnock-Jones wrote:
>> On 2011-05-11 10:03 AM, Frank Shearar wrote:
>>> http://source.lukas-renggli.ch/continuations.html
>>> *sigh*
>>> A nice suite, too: shift/reset, control/prompt, shift0, ...
>>
>> Heh :-) So will you be merging the two projects? Or would you recommend
>> retiring one in favour of the other? Or something else?
>>
>> (I ask because I'm going to need a delimited-continuations package in
>> the medium-term future, and I'd like to know where to look first :) )
>
> The package certainly loads cleanly into a fresh trunk. Something strange is
> happening though, because running the tests a second time (the first
> generates a huge number of failures) hangs my image.
>
> Once I've figured out what's going on I'll be able to comment properly, but
> for an ad hoc off-the-cuff:
>
> Lukas is very clever, so his is probably better. His library has loads of
> operators, so if you want more than just shift/reset, try his out.
>
> Control (mine/Levente's) implements only shift/reset, but the use thereof is
> quite natural. Also, I know that Control works properly, because I can get
> the tests to run :) One thing to watch out for though is that Control exposed
> a bug in Cog, so be sure to use a version later than r2380 (or use the
> Interpreter VM).
>
> You can use the partial continuations in one of two ways:
>
> [ 1 + [:k | cont := k. k value: 0 ] shift ] reset
> [ 1 + [:k | k value: 2 ] shift ] reset
>
> or (thanks to Levente)
>
> c := [ 3 + PartialContinuationNotification signal ]
> on: PartialContinuationNotification
> do: [ :not | not continuation ].
> c value: 4. "==> 7"
>
> (The two ways just split the responsibilities of creating and invoking the
> continuations differently.)
For the note, I added ContextPart >> #copyTo:bottomContextDo: to the
Trunk which is a really simple and fast way to create partial
continuations (it requires the current latest CogVM r2382, or any
interpreter VM). ContextPart >> #copyStack is perfect for regular
continuations. I also reimplemented PartialContinuation (and
WAContinuation and WAPartialContinuation) with this method. I uploaded it
to the Control repository: http://squeaksource.com/Control/Control-ul.7.mcz
IIRC the rewrite of the Seaside continuations resulted in 1.16x speedup
for WAPerformanceFunctionalTest using Cog.
Levente
>
> frank
>
>
More information about the Squeak-dev
mailing list
|