[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