[mercury-users] declarative kernels

Thomas Conway conway at cs.mu.OZ.AU
Tue Mar 7 09:12:33 AEDT 2000


On Mon, Mar 06, 2000 at 09:22:26PM EST, Ralph Becket wrote:
> > From: Thomas Conway [mailto:conway at cs.mu.OZ.AU]
> > 
> > There are two interpretations of the io__state.
> > 
> > The first, proposed by Fergus, is that the io__state 
> > represents the state
> > of the external world, and that I/O operations modify the 
> > external state.
> > This has the drawback that if, for example someone else on the system
> > removes a file between when you finished writing it, and when 
> > you go to
> > read it again, then the act of closing the file has to 
> > implicitly remove
> > it as well, which is a bit strange, but it is a fairly simple model.
> 
> Oh, that's not my interpretation of what Fergus said.  I thought Fergus
> was advocating the idea of an io__state being a *view* of the external
> world - that is, it keeps track of what your program has attempted to do
> to the outside world, rather than being a reflection of the actual state
> of the outside world.  This means that just because you wrote something 
> to a file, there's no guarantee that that's what you'll read back in.

The catch is, that the io__state as the state of the exterrnal world
view doesn't come with a simple mechanism to account for you not being
the only thing changing the world. The list of interactions view does.

> 
> > More recently I proposed an interpretation that owes a lot to 
> > concurrent
> > logic programming, where the io__state represents a list of 
> > interactions
> > with the external world. The io__state pair represents a 
> > difference list
> > (in the Prolog sense), with the second io__state representing the I/O
> > operations that come "after".
> 
> This is an appealing picture, but I don't see how it takes exogenous
> events into account (e.g. someone else unexpectedly deleting a file).
> Unless, of course, your_main/2 below is the merge of everybody else's
> IO operations, too.

Exactly.

-- 
 Thomas Conway )O+     Every sword has two edges.
     Mercurian            <conway at cs.mu.oz.au>
--------------------------------------------------------------------------
mercury-users mailing list
post:  mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-users-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the users mailing list