[mercury-users] declarative kernels

Ralph Becket rbeck at microsoft.com
Mon Mar 6 21:22:26 AEDT 2000

> 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.

> 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.

> ?- my_main(IO0, []), your_main(IO1, []), merge(IO0, IO1, IO), 
> do_io(IO).

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