[mercury-users] semidet vs unique updating
Ralph Becket
rafe at cs.mu.OZ.AU
Wed Oct 17 14:57:27 AEST 2001
Michael Day, Wednesday, 17 October 2001:
> > You should take a look at mostly_unique and mostly_dead insts, which
> > are described in the "Backtrackable destructive update" section of the
> > reference manual. These may be closer to what you want.
>
> Is that basically a request to the compiler to make a copy automatically
> to allow backtracking? What I'm looking for here is a way to tell the
> compiler that making a copy is unnecessary, be it implicit or explicit.
> Alternatively I could just provide not_empty and get_det and leave the
> user to call them, but it seems like the compiler should be able to see
> that it's not modified.
The compiler trails updates to mostly-unique objects so that it can
undo any changes to them on backtracking, so your example will only
incur an small overhead, but would pay a price for every genuine
update.
If this is a crucial performance problem for your application, you
could implement something using impure code and give it a pure
interface.
- Ralph
--------------------------------------------------------------------------
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