On 13 October 2012 17:05, Stéphane Ducasse <[email protected]> wrote:
> Frank
>
> I was asked to do a keynote to master, phd student and other and I would like 
> to show them that with the right
> tool we can do some powerful abstractions.
>
> I'm thinking showing them
>         thisContext use for haltIf
>         on:fork: example

I don't see a #haltIf: in my Pharo 2.0 image (but it's well out of
date, and I'm still waiting for the update to finish) but I imagine it
would evaluate a block and when that block returns true, uses
thisContext sender (sender ...) to drop you into the right context?

> do you have idea?
> Should I look (I will ;)) look at Control and DynamicVariable?
> Do you have other idea?

I think thisContext is an excellent jumping board into a great many
things. 
http://www.mirandabanda.org/cogblog/2009/01/14/under-cover-contexts-and-the-big-frame-up/
has a lovely paragraph:

"Contexts are fabulous weapons, even better programming building
blocks, and horribly expensive. How do I love contexts? Let me count
the ways…

Contexts mean Smalltalk has had edit-and-continue debugging since the 1970′s.
Contexts allow the implemention of an exception system with no
additional support from the virtual machine.
Contexts allow the implemention of dynamic binding, co-routines,
tail-recursion-elimination and backtracking with no additional support
from the virtual machine.
Contexts enable process persistence and migration.
Contexts allow implementation of continuations (full,
delimited/partial or otherwise) without additional VM support (and
hence the Seaside web framework).
Contexts are consistent (consistent) with the rest of the “objects all
the way down” system, providing activations as first-class objects.
Because they’re there."

frank

> Stef
>
> On Oct 13, 2012, at 5:54 PM, Frank Shearar wrote:
>
>> On 13 October 2012 15:47, Damien Cassou <[email protected]> wrote:
>>> I'm looking for a piece of code that is hard to understand by looking
>>> at the source code but which has unit tests that help understanding
>>> the behavior.
>>>
>>> Do you have any idea?
>>
>> http://ss3.gemstone.com/ss/Control/ has tests for delimited dynamic
>> variables. The idea's not terribly complicated - close over a variable
>> and use resumable exceptions to refer to it or change it - but if you
>> don't have that in-a-nutshell idea in your head it can look a bit
>> strange. But the tests in ControlTests' DelimitedDynamicVariableTest
>> show quite clearly how dynamic binding works.
>>
>> (The delimited part probably won't make a lot of sense until one's
>> managed to wrap one's head around control operators - shift, in this
>> case - so the nice interaction between the delimited continuations and
>> the delimited dynamic variables might be lost on a newbie.)
>>
>> frank
>>
>>> --
>>> Damien Cassou
>>> http://damiencassou.seasidehosting.st
>>>
>>> "Success is the ability to go from one failure to another without
>>> losing enthusiasm."
>>> Winston Churchill
>>>
>>
>
>

Reply via email to