[mercury-users] Uniqueness and store.m

Sergey Khorev iamphet at nm.ru
Fri Dec 30 18:18:23 AEDT 2005

I'm trying to figure out how to use store.m and ran into problems with storing types that contain references.
The compiler version 0.12.1 gives me an error
sto2.m:024: In clause for `main(di, uo)':
sto2.m:024:   in argument 1 of call to predicate `store.new_ref/4':
sto2.m:024:   mode error: variable `V_18' has instantiatedness `unique(sto2.p(ground, ground))',
sto2.m:024:   expected instantiatedness was `unique'.

I can't understand where this constraint has arisen from. Is it possible to keep store__references in the store at all?

:- module sto2.

:- interface.

:- import_module io.

:- pred main(io::di, io::uo) is det.

:- implementation.

:- import_module store.

% type to keep in the store
:- type stype(S) ---> n(int)	% integer
	; s(string)		% string
	; p(			% a pair of references
	    store_ref(stype(S), S),
	    store_ref(stype(S), S)).

main(!IO) :-
	new_ref(n(5), Rn, S0, S1),
	new_ref(s("abc"), Rs, S1, S2),
	new_ref(p(Rn, Rs), _Rp, S2, _S3).
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