Kevin,

I agree that if the user decides to update a mutable key by accessing it 
through a token, then the container has enough information to patch up its 
indexing structure and keep it valid.  However, in the trace of a Julia 
execution in my original posting, the user clobbered a key inside the 
dictionary DD via the statement a[3]=9, which makes no reference at all to 
the dictionary.  In this scenario it is not clear how the container can 
stay consistent. 

-- Steve


On Monday, October 13, 2014 2:26:14 PM UTC-4, Kevin Squire wrote:
>
> I'll point out that part of Steven's proposed SortedDict implementation 
> supports "Tokens", which represent the location of a (key, value) pair in a 
> dictionary.  These are generalizable to hash-based Dicts, and should make 
> it possible to update the dictionary when a key is changed. 
>
> For hash-based dictionaries, the main concern is keeping track of the 
> validity of tokens when the hash table is resized. 
>
> Cheers,
>    Kevin
>
> On Monday, October 13, 2014, Ivar Nesje <[email protected] <javascript:>> 
> wrote:
>
>> I think the easy access to user defined immutables in Julia would make a 
>> great argument for disallowing mutable keys. It's an unfortunate choice to 
>> make tough, because it is a pure restriction that makes some problems 
>> harder to solve. It also seems somewhat costly in implementation (because 
>> we need to check a new recursive immutable property). The result will be 
>> that lots of users gets a error about mutable keys, instead of a KeyError 
>> only when the key changed.
>>
>> We could make a copy on insertion, but that would require us to also take 
>> a copy before iterating on the keys as well. That would create lots of 
>> temporary copies, that Julia currently doesn't have the infrastructure to 
>> optimize away.
>>
>> Ivar
>>
>> kl. 19:12:37 UTC+2 mandag 13. oktober 2014 skrev Stefan Karpinski 
>> følgende:
>>>
>>> Yeah, there's no ideal solution. Python disallows mutable keys; Ruby 
>>> allows them and has the same behavior as Julia here; Perl turns all keys 
>>> into strings (I think that string keys may still be mutable in Perl, but 
>>> it's become so hard to get a readline-enabled prompt in Perl, that I gave 
>>> up on checking).
>>>
>>>>
>>>>
>>> 

Reply via email to