[m-rev.] for review: timestamp.m: fix order-of-eval problem

Ralph Becket rafe at cs.mu.OZ.AU
Wed Nov 20 10:02:15 AEDT 2002


Fergus Henderson, Tuesday, 19 November 2002:
> > 	(P && Q)
> > 
> > into
> > 
> > 	(if P' then X1 = X1', ..., Xn = Xn', Q else false)
> >
> > where if the Xi are the output non-locals of P then
> > 
> > 	P' = P[X1'/X1, ..., Xn'/Xn]
> 
> I think that transformation would not handle dynamic modes or partially
> instantiated modes properly.  That transformation only works if the
> initial insts of the Xi are all "free", not if they are partially
> instantiated or if they have the "any" inst.

As a first cut we could just forbid the use of && in these situations.
I admit that is less than ideal, but it would cover most day-to-day
situations.  

> Also, at what point in the compilation process were you thinking of
> doing this transformation?  If it is done before semantic analysis
> is finished, then the result will be confusing error messages,
> because the errors will refer to the transformed code rather than the
> source code.

Perhaps a better alternative would be to just add a new hlds_goal_expr
connective for ordered conjunction?

- Ralph
--------------------------------------------------------------------------
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the reviews mailing list