Steven Schveighoffer Wrote:

> I wonder what your expert opinion is:  Is something like unique possible  
> without introducing all the other type modifiers (like 'lent', etc.)?  If  
> not, what are the minimum type modifiers you'd need to get unique to  
> work?  I really like the unique concept, and think it is really one of the  
> biggest holes missing from the const system (aside from bug 1961).

The most complete description of "unique" that I've seen is in Haller/Odersky 
Scala paper "Capabilities for External Uniqueness." It's not an easy paper to 
read, but I'm planning on writing a blog post in which I'll try to make it more 
palatable. They use annotations to extend the type system, something that was 
pioneered in Java. The recent introduction of annotations (like @property) in D 
makes this approach quite attractive. They used the following annotations: 
@unique, @transient, and @exposed (@transient loosely corresponds to "lent").

Don't get me wrong, the full specification of uniqueness is non-trivial and I 
wouldn't propose it for D just to solve the array expansion problem. The real 
power of "unique" shows in multithreaded programming where you can pass unique 
objects between threads and safely operate on them without any synchronization. 

Reply via email to