[m-dev.] logging proposal

Mark Brown mark at cs.mu.OZ.AU
Tue Feb 28 20:40:39 AEDT 2006


On 28-Feb-2006, Ian MacLarty <maclarty at cs.mu.OZ.AU> wrote:
> On Tue, Feb 28, 2006 at 10:16:11AM +1100, Mark Brown wrote:
> > On 28-Feb-2006, Ian MacLarty <maclarty at cs.mu.OZ.AU> wrote:
> > > We should aim to seperate out the code that defines the behaviour
> > > of the application, and the code that is for observing/debugging the
> > > execution of the program.  This proposal doesn't quite get there.
> > > 
> > > Perhaps a better solution would be to have a `log' (or `debug')
> > > "goal", so in your code you might have a something like:
> > > 
> > > debug io.format("X = %i\n", [i(X)])
> > > 
> > > This makes the distinction much clearer.
> > 
> > That's a great idea.  I think it would be better to explicitly introduce
> > the io.state variables though:
> > 
> > 	debug [!IO] ( io.format("X = %i\n", [i(X)], !IO), ... )
> > 
> > so that `debug' is a new quantifier.  This would save using explicit
> > lambda quantifiers or DCG goals (I can't tell from your sample which
> > you intended).
> 
> Would you ever have something else besides an I/O state pair in the
> list after the `debug'?

No, I don't think so.

> If not then the !IO seems a bit redundant.  I
> can't think how having anything else besides !IO would work.

It gives names to the io.state variables.  Some people might prefer !S,
for example.

The alternatives that I can think of are that the body should be a DCG-goal
and that the body should be a higher-order term.  The former should be
avoided because we've found state variable syntax to be much nicer to read;
the latter would be more verbose for anything other than a single call in
the body (which can be curried, and therefore won't need an explicit `pred'
quantifier).

Cheers,
Mark.

--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to:       mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions:          mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------



More information about the developers mailing list