> 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.