uniqueness propagation

Robert Jacques sandford at jhu.edu
Fri Feb 25 21:41:32 PST 2011


On Fri, 25 Feb 2011 23:49:51 -0500, Steven Schveighoffer  
<schveiguy at yahoo.com> wrote:

> On Fri, 25 Feb 2011 23:31:17 -0500, Robert Jacques <sandford at jhu.edu>  
> wrote:
>
>> On Fri, 25 Feb 2011 22:35:39 -0500, Steven Schveighoffer  
>> <schveiguy at yahoo.com> wrote:
>>
>>> On Fri, 25 Feb 2011 19:01:28 -0500, Tomek Sowiński <just at ask.me> wrote:
>>>
>>>> Robert Jacques napisał:
>>>>
>>>>> On Fri, 25 Feb 2011 02:48:01 -0500, Kevin Bealer
>>>>> <kevindangerbealer at removedanger.gmail.com> wrote:
>>>>> > I think immutable could benefit from a Value Range Propagation-like
>>>>> > uniqueness
>>>>>
>>>>> 'unique' has been proposed and heavily discussed before in the news  
>>>>> group.
>>>>> There even is std.typecons.Unique. Unfortunately, Walter has stated  
>>>>> that
>>>>> there are issues/difficulties in adding 'unique' to the language.
>>>>
>>>> What were those difficulties?
>>>>
>>>
>>> YATC (yet another type constructor)
>>>
>>> Plus, when this was the topic de jour, there were about 3 other type  
>>> constructors that were touted as "needed" in order to make unique work  
>>> (like "borrowed" and "lent").  Bartosz had a blog post about it.  This  
>>> meant you had to accept 3 or 4 new type constructors to get unique.
>>
>> My impression was that it was more than that. Yes, also adding a  
>> 'lent/borrowed/scope/no escape' and a 'owned' type would have greatly  
>> eased and empowered unique, but these were all talked about in the same  
>> breath back then. Walter indicated that there was something specific to  
>> unique which was the problem, probably having to do with transitivity.  
>> Ultimately, 'unique/mobile', 'lent/borrowed/scope/no escape' and  
>> 'owned' were all about doing shared memory concurrency better, while  
>> the flagship concurrency model was message-passing.
>
> Unique has other benefits.  You can implicitly cast unique to/from  
> immutable.  You can pass a unique reference via a message without it  
> having to be immutable.

You can't cast immutable to unique.

> These would benefit thread-local code, and also message passing.

Yes, I'd forgot to mention those, even though I prefer 'mobile' over  
'unique', which kinda implies message passing. ('unique' comes from C++,  
while 'mobile' comes from Occam/CSP)

>>> I really like this idea as a way to have unique without the type  
>>> constructor: http://d.puremagic.com/issues/show_bug.cgi?id=5081
>>
>> Well, that not unique. That's a way to gain one of the major benefits  
>> (the building of immutable types) of unique without it. That said, I  
>> also would like it.
>
> Yes, it is a subset of unique, I should have stated it that way.
>
> -Steve


More information about the Digitalmars-d mailing list