std.experimental.collection.functional.slist

Timon Gehr via Digitalmars-d digitalmars-d at puremagic.com
Fri Jun 19 16:21:20 PDT 2015


On 06/20/2015 12:36 AM, Andrei Alexandrescu wrote:
> On 6/19/15 2:23 PM, Timon Gehr wrote:
>> What makes persistent data structures useful is that they provide _value
>> semantics_ for complex data types with _O(1)_ copies and fast updates.
>> (COW has only the first two of those.)
>
> OK, so SList!int should allow mutating individual values, and
> SList!(immutable int) shouldn't? Or does that apply only to objects with
> indirections?

Forgot to answer to this.

E.g:

struct ListInt6{int front,b,c,d,e,f; }

auto x = ListInt6(1,2,3,4,5,6);
auto y = x;
x.front = 2;
assert(x.front==2);
assert(y.front==1); // value semantics


auto x = SList!int(1,2,3,4,5,6);
auto y = x;

x.front=2;
assert(x.front==2);
assert(y.front==1); // value semantics

It is not absolutely crucial that this works, but then, why shouldn't it 
work? It works for structs.




More information about the Digitalmars-d mailing list