FW: [Seaside] Ports of Seaside - are there useful modules

Jeffrey Odell jeffo@odellsoft.com
Wed, 1 May 2002 15:19:38 -0400


We're allowing OA to get their Version 5 out before we bother them -
they were interested but had a deadline.  This version is available as a
RC1 and should be production May 3rd, so we'll give them a little
breathing time before we hit them with it again ;>

There is an excellent port of Swazoo on http://www.dolphinharbor.com,
and I know the guys behind that are very interested in seaside, so we'll
see if we can get OA to look again when they get a chance to get their
heads above water.  FYI - They are releasing a very impressive product
this week.  Worth a look: http://www.object-arts.com.  Integrated
refactorings, excellent COM/Active/X support, too many other features to
enumerate.  If you want Windows integration, it is tough to beat.

I'll look at the code sample you've provided (again - thanks) as I'm
sure it will help me wrap my head around what is going on.

jlo

-----Original Message-----
From: Avi Bryant [mailto:avi@beta4.com] 
Sent: Wednesday, May 01, 2002 3:07 PM
To: Jeffrey Odell
Cc: seaside@lists.squeakfoundation.org
Subject: Re: FW: [Seaside] Ports of Seaside - are there useful modules


On Wed, 1 May 2002, Jeffrey Odell wrote:

> Still considering a port to Dolphin Smalltalk.  Given the answer 
> below, does it make sense that, until we have continuations (which I 
> think there is a reasonable chance of getting OA to do eventually), we

> can implement the callPage: concept by having each IAPage save it's 
> state in an "page specific" manner, as well as it's place in the page 
> call stack?
>
> In other words, isn't a continuation just a low level, admittedly very

> cool, way of:
> - saving the state of the component,
> - saving it's place in the call-return list of components?

Well, no, not really.  It's not just saving the current component, it's
saving the current spot in the current method of the current component.
There really aren't any good halfway solutions - either Dolphin has some
way to return twice from the same method call, or it doesn't.

There is what's called "continuation passing style", which involves
explicitly passing around blocks which represent the current
continuation. In that case, code like:

getNameAndAddress
  |name address|
  "random silly example"
  name := self callPage: (IANamePage new).
  address := self callPage: (IAAddressPage new).
  ^ Array with: name with: address

would become

getNameAndAddressWithContinuation: returnBlock
  self callPage: (IANamePage new)
       withContinuation:
         [:name |
         self callPage: (IAAddressPage new)
              withContinuation:
                [:address |
                returnBlock value:
                 (Array with: name with: address)]]

As you can see, that becomes cumbersome very quickly.  However, it's a
good way to understand what's actually going on underneath.

Has ObjectArts said anything about the possibility of adding
continuations to the VM?

Avi