> On 16 Aug 2016, at 22:10, Brandon Allbery <allber...@gmail.com> wrote:
> 
> On Tue, Aug 16, 2016 at 4:00 PM, Zefram <zef...@fysh.org> wrote:
> That's what I think it is.  I'm mystified as to what you think I think
> it is.
> 
> Because of all the behaviors central to it being the implementation of a 
> mutable value, that you have reported as bugs. They're not bugs, they are 
> proof that Scalar is *not what you want*. It is the implementation of a 
> mutable value that can be used as a value; they are *not* general mutable 
> containers which is what you are looking for. They aren't, and maybe if you 
> look over your recent "bugs" you might recognize a pattern about their 
> behavior that would tell you that they are not what you want them to be, they 
> are something different and they must be something different.
> 
> Let's try it this way: earlier I sai that yuou had created a mutable-key Pair.
> I did not mean "You created something equivalent to a mutable-key Pair".
> You *precisely* created a Pair that has a mutable component, in something 
> that is not intended to be mutable. Anything that uses a Pair expects it to 
> be immutable; your mutable-key Pair is no longer an immutable type.
> 
> Arguably this situation should not be allowed to occur, but that's why .VAR 
> is a hack that is leaking something that should not be visible. You're 
> breaking language invariants as a result; you can slip mutability into 
> immutable types at a level the type system can't see --- because Scalar is 
> precisely the difference between immutable and mutable values.

dd9b760 makes it impossible to create a Pair with a mutable key.

Tests needed.

Reply via email to