On Wednesday, 16 October 2013 at 19:01:59 UTC, H. S. Teoh wrote:
On Wed, Oct 16, 2013 at 08:49:51PM +0200, Daniel Davidson wrote:
On Wednesday, 16 October 2013 at 17:55:14 UTC, H. S. Teoh wrote: >On Wed, Oct 16, 2013 at 07:23:24PM +0200, Daniel Davidson >wrote:
[...]
>>If you have a type that has now or may ever have in the >>future any >>mutable aliasing (e.g. inclusion of T[] or T1[T1] where Ts >>are >>mutable) do not ever use the immutable keyword in any >>context as
>>things just break down.
>
>Yes, because immutable means nothing, no one, can change the >data >after it's constructed, ever. If you want mutable aliasing, >what you
>want is const, not immutable.
>

I think the term "mutable aliasing" and "what you want" don't work together. "mutable aliasing" is not about context of usage or what you want, it is a compile time attribute of a struct. I want to use associative arrays in composition because I think they are the way I view and use my data. `struct T { string[string] i; }` has mutable aliasing, like it or not. So, it is not so much that I want mutable aliasing - in fact I fear it. But once you use AAs it is a fact of
life.
[...]
Is the suggestion here: use immutable in any composition context
where you have slices and you want to not "worry about mutable
aliasing". So, do like string does: any case where you have T[] as a member, prefer immutable(T)[] since then you don't have to worry about sharing. Well, not sure that works in general because the T in string is char and has no mutable aliasing itself. Suppose T itself has mutable aliasing, then what? Or, suppose it is a struct with no
mutable aliasing *now*. Who's to say it won't change.

So, where does all this leave us w.r.t. a good set of guidelines?

Sorry, I kinda barged into this conversation, so I'm not sure what exactly you're trying to achieve here. What kind of composition contexts do you have in mind? Maybe you could help me understand what you're
trying to do?


Thanks. I appreciate any help I can get. Here is a small sample: http://pastebin.com/TeiQ9DYa

Other samples have at least 5 levels of composition. I'm generating the structure from json schema so I'm looking for something that scales and is immune to changes in deeply nested members.

Keeping in mind that AA's, as they are currently implemented, leaves a lot of room for improvement, to say the least. So you might be running
into some AA-related issues, not the type system proper.


I understand. It is a shame. If the data source is rich json data - I think AAs are a necessity.

Reply via email to