[mercury-users] Request for comments on this code

Julien Fischer juliensf at csse.unimelb.edu.au
Mon Jul 10 17:52:51 AEST 2006


On Mon, 10 Jul 2006, Mark Brown wrote:

> On 10-Jul-2006, Peter Schachte <schachte at csse.unimelb.edu.au> wrote:
> > On Sun, Jul 09, 2006 at 05:13:41PM +1000, Mark Brown wrote:
> > > On 09-Jul-2006, Peter Moulder <Peter.Moulder at infotech.monash.edu.au> wrote:
> > > > Mercury guarantees that
> > > > the `if' goal is executed entirely before the `then' goal (modulo any
> > > > backtracking).
> >
> > > > (I think that there was a proposal for a `&&' operator to make the above
> > > > more readable; I can't remember the fate of that proposal.)
> > >
> > > It was deemed insufficiently useful at the time.  For cases like the above,
> > > the idea would be to try to make explicit the IO states that you are
> > > interested in (*).  So the code would look something like:
> > >
> > > 	clock(R0, !IO),
> > > 	do_stuff(N, Q, !IO),
> > > 	clock(R1, !IO),
> >
> > This is preferable to the if->then;else version, but still doesn't
> > seem quite right semantically.  Being pure should mean the program
> > behaves deterministically, and clock doesn't.
>
> Sure it does!  It just gets a different IO state as input every time it
> is called, and the output is determined from that.
>
> > It also seems strage to
> > thread the IO state through do_stuff if it doesn't do IO.
>
> The existence of clock/3 implies that the number of elapsed clock ticks
> is part of the state of the world, and therefore the fact that do_stuff
> takes a possibly non-zero amount of clock ticks to execute means that it
> affects the IO state.  But this is getting perilously close to opening
> the can of worms that I alluded to earlier.  :-(
>

It's a ticking can of worms :-)

Julien.
--------------------------------------------------------------------------
mercury-users mailing list
post:  mercury-users at csse.unimelb.edu.au
administrative address: owner-mercury-users at csse.unimelb.edu.au
unsubscribe: Address: mercury-users-request at csse.unimelb.edu.au Message: unsubscribe
subscribe:   Address: mercury-users-request at csse.unimelb.edu.au Message: subscribe
--------------------------------------------------------------------------



More information about the users mailing list