[m-dev.] Uniqueness again

Ralph Becket rafe at cs.mu.OZ.AU
Fri Feb 7 15:14:24 AEDT 2003


Talking to Fergus, it seems my previous note wasn't as clear as it might
have been.

Clarification: I propose that we extend the current mode analysis
framework to handle nested uniqueness in the following way:

- record possible use information and possible sharing information from
  constructions, deconstructions and aliasing as the existing analysis
  proceeds;

	[We can do this at negligible cost by incrementally consing this
	information - a shared(X) or a poss_uses(X, Y) record in each
	instance - into a list.]

- use this information to do necessary uniqueness testing when (and only
  when) we need to verify that a procedure argument is necessarily
  unique.

  	[We only pay for the cost of necessarily uniqueness analysis
	if either
	- the code explicitly uses uniqueness or
	- we have structure reuse optimization turned on, in which case
	  we also need to perform this analysis at each construction.]

I think we should also go with the following:

- ditch consideration of partially instantiated terms;

  	[We can lift this constraint at some later date if and when
	it is deemed necessary and the analysis is cheap enough.]

- change the meaning of "unique" from "the top-level functor is unique
  and each of its arguments is also unique" to just "the top-level
  functor is unique."

To do: write down a formal description of the analysis including how it
should deal with 

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