[m-dev.] Explicit destruction of unique objects
    Ralph Becket 
    rbeck at microsoft.com
       
    Wed Apr 11 01:21:25 AEST 2001
    
    
  
I've just been to a talk on the Vault project, concerned with static
detection
of API usage violations.  Their solution is essentially based on the
idea of
uniqueness and existentially quantified types(*), similar to Mercury's,
but they 
require that unique objects be explicitly disposed of.
I think this is a requirement we should add to Mercury because it allows
static
detection of errors such as acquiring locks and then not freeing them
before they
go out of scope (assuming a lock is treated as a unique object).
The destroy operations can still be noops, though they're a good
opportunity for
compile time GC.
At the moment we don't do this: the compiler is happy with the
following...
:- module foo.
:- interface.
:- import_module io, int.
:- pred p(int::in, io__state::di) is det.
:- implementation.
p(X, IO) :- io__write_int(X, IO, _).
- Ralph
(*) Although they pander to the great unwashed by supplying all this
stuff as
syntactic sugar for an imperative language.
--------------------------------------------------------------------------
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