[Haskell-cafe] Unsafe IO and Wash

John Goerzen jgoerzen at complete.org
Wed Feb 16 09:27:31 EST 2005


On Wed, Feb 16, 2005 at 07:16:50AM +0100, Tomasz Zielonka wrote:
> On Wed, Feb 16, 2005 at 04:33:29AM +0000, John Goerzen wrote:
> > On a related note, Wash seems to be preserving all sorts of unnecessary
> > "state" from previous screens a user visited.
> 
> You do know that the current version of WASH rebuilds the continuation
> by repeating all the previous steps, don't you? Until WASH can keep the

Yes.  What I don't understand is why.  If I have a submit button, and it
is passing one value to the next function, and that value is from an
entry form on the screen, why would I care about all the previous state?
That's my confusion.  It seems unnecessary.

> Perhaps you don't see the whole power of continuation based approach
> to web programming. I will give you an example - when I use WASH, I
> often pass first-class functions to from screen to screen, for example
> as a way of telling the screen what to do next (a continuation), or as
> the most convenient way to do something. It would be quite difficult
> to pass those functions as form parameters, so they are being rebuilt
> each time from the log.

Yeah, that's a neat feature.  I'm using it some places, too.  It's
probably true that I don't understand fully how to exploit it yet.  (I wish
that I could return something other than () from a screen too.)  I just
want a way to pass only what I need.  Passing lots of stuff is going to
make my applications painful for modem users, which unfortnuately make
up a large part of the user base.

> Are you sure your IO actions will always yield the same result? If so,
> the you can safely use unsafe_io. Otherwise you should let was save
> the result of them in the log by using io.

Excellent, thanks.

-- John


More information about the Haskell-Cafe mailing list