>> 
>> Now I implemented call/cc in a probably bad ways (CSP) so fast versions 
>> probably introduces context too. since this is just copying the activation 
>> stack and jumping to it.
> 
> Do you mean CPS/continuation passing style?

yes 
but this was a stupid and simple implementation of a simple scheme. 
Just plain boring to debug but nothing fancy. 

> I've been thinking about
> how to do CPS on Smalltalk, these past few weeks, precisely for
> (delimited) continuations.

I think that if this is not done automatically by program transforamtion you 
end up creating ugly code. 

> I'd like to contrast the technique with my
> current implementation, using exceptions. How are you finding it?
> 
> Delimited continuations are superior to call/cc at any rate: it's
> trivial to express call/cc in terms of delimited continuations (wrap
> your entire process in a prompt and you're done), but the converse
> isn't true. You can fake delimited continuations  a la call/cc +
> mutable cell, but it's messier. Also, undelimited continuations can't
> be treated like functions, and can't compose. Oleg Kiselyov's written
> a fair about the issue, and continuations in general:
> 
> * http://lambda-the-ultimate.org/node/4313
> * http://okmij.org/ftp/continuations/undelimited.html
> * http://lambda-the-ultimate.org/node/86
> * http://okmij.org/ftp/continuations/index.html

I'm sorry I did that nearly 10 years ago just for fun and a lecture so I forgot 
:)
Now I do not know delimited continuations

Stef
> 
> frank
> 
>>> Q1 When are they absolutely required?
>>> Q2 What replacing mechanisms would be needed?
>>> Q3 What would we gain from an implementation stand point?
>>> 
>>> Some simplicity, certainly.  But (IMO) ^-return isn't as complex as method 
>>> lookup and message cacheing so you're not reducing complexity overall.
>>> 
>>> It seems that in resilience lars removed them and more.
>>> 
>>> Yes, IIRC he got rid of first-class blocks.  They can only be downward 
>>> funargs (passed as parameters), not upward funargs (stored in inst vars, 
>>> returned as results and hence used after their enclosing activation has 
>>> returned).
>> 
>> Yes exactly. So I wanted to know if removing ^- was like removing upward 
>> funargs.
>>> 
>>> 
>>> Stef
>>> 
>>> for Q1 I see
>>> 
>>> foo
>>>        x isZero ifTrue: [^ 33].
>>>        self continue
>>> 
>>> 
>>> 
>>> --
>>> best,
>>> Eliot
>>> 
>> 
>> 
>> 
> 


Reply via email to