[squeak-dev] The Inbox: Collections-ul.564.mcz
Tobias Pape
Das.Linux at gmx.de
Mon Feb 3 16:08:34 UTC 2014
On 03.02.2014, at 16:14, Frank Shearar <frank.shearar at gmail.com> wrote:
> On 3 February 2014 15:06, Tobias Pape <Das.Linux at gmx.de> wrote:
>> On 03.02.2014, at 16:01, Frank Shearar <frank.shearar at gmail.com> wrote:
>>
>>> On 3 February 2014 14:49, Tobias Pape <Das.Linux at gmx.de> wrote:
>>>> On 03.02.2014, at 15:28, Frank Shearar <frank.shearar at gmail.com> wrote:
>>>>
>>>>> On 3 February 2014 13:48, <commits at source.squeak.org> wrote:
>>>>>
>>>>> So this is a basic depth first traversal with cycle protection, yes?
>>>>> (This pattern seems to crop up _a lot_. Maybe it's worth pulling out
>>>>> as a separate algorithm?)
>>>>
>>>> Well, there are two such applications:
>>>> One with an explicit down-handling of a variable (like this)
>>>> and one with an implicit variable (semi-global)
>>>> (Dynamic variable, probably, at least thread-local)
>>>>
>>>> I would like to have both.
>>>> I propose the (seaside-inspired) #use:during: message for the second.
>>>
>>> Except that DynamicVariable's #use:during: is incompatible with
>>> stack-slicing, because those kinds of dynamic variables aren't
>>> delimited. (Unlike resumable exceptions, for instance.
>>
>> Sorry, I (currently) don’t know what you mean by stack-slicing.
>> Are we speaking of Martin von Löwis’ DynamicVariables currently in 4.5/trunk
>> that are based on Thread-local storage
>> or the Seaside ones based on Exceptions?
>
> Ah! I thought that the Seaside ones were the same the DynamicVariable in trunk!
No; the trunk ones should be better, performance-wise, since they don’t
have to walk the stack on #value
>> (I just see that DV is using #value:during: rather than #use:during:
>> the former is consistent while the latter IMHO speaks better)
>
> Right. So if Seaside's version uses resumable exceptions, there's no trouble.
>
> By "stack-slicing" I mean tricks like using delimited continuations.
> Oleg Kiselyov demonstrated [1] how, since there are multiple
> reasonable ways of using delimited control and dynamic bindings
> (trunk's DynamicVariable) together, that there were therefore _no_
> reasonable ways of combining them. Dynamic bindings either capture too
> much or too little of the environment. The answer is to _delimit_ the
> dynamic bindings. Handily, that's exactly what we have with resumable
> exceptions + #on:do:.
> [1] http://www.cs.indiana.edu/~sabry/papers/delim-dyn-bind.pdf
Yes, but I think that is more of concern for continuations than for
dynamically scoped variables, no? Aren’t those by definition delimitted?
Best
-Tobias
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 1665 bytes
Desc: Message signed with OpenPGP using GPGMail
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20140203/c5d299b6/signature.pgp
More information about the Squeak-dev
mailing list
|