[mercury-users] Unique and mostly-unique modes
David Overton
dmo at cs.mu.OZ.AU
Thu Sep 8 18:02:38 AEST 2005
On Thu, Sep 08, 2005 at 02:35:48PM +1000, Ralph Becket wrote:
> > test.m:018: In clause for `write(in, di, uo)':
> > test.m:018: mode error: argument 3 did not get sufficiently instantiated.
> > test.m:018: Final instantiatedness of `HeadVar__3' was
> > test.m:018: `unique(test.socket(ground))',
> > test.m:018: expected final instantiatedness was `unique'.
> >
> > How is this incorrect? Surely unique(socket(ground)) <= unique.
>
> Indeed.
This one has been correctly identified by the compiler as a mode error.
The argument to socket/1 is not unique because it is also returned as
the first argument of read/3 and so there is more than one live
reference to it. The inst `unique' means unique all the way down.
David
--
David Overton
WWW: http://www.overtons.id.au/
Mobile Phone (UK): +44 7799 344 322
--------------------------------------------------------------------------
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