Re: r24819 - docs/Perl6/Spec

2009-01-08 Thread Jon Lang
Darren Duncan wrote:
> pugs-comm...@feather.perl6.nl wrote:
>>
>> Log:
>> [S02] clarify that Pairs and Mappings are mutable in value, but not in key
>
> 
>>
>> KeyHash Perl hash that autodeletes values matching default
>> KeySet  KeyHash of Bool (does Set in list/array context)
>> KeyBag  KeyHash of UInt (does Bag in list/array context)
>> +PairA single key-to-value association
>> +Mapping Set of Pairs with no duplicate keys
>
> 
>>
>> +As with C types, C and C are mutable in their
>> +values but not in their keys.  (A key can be a reference to a mutable
>> +object, but cannot change its C<.WHICH> identity.  In contrast,
>> +the value may be rebound to a different object, just as a hash
>> +element may.)
>
> Following this change, it looks to me like Mapping is exactly the same as
> Hash.  So under what circumstances should one now choose whether they want
> to use a Hash or a Mapping?  How do they still differ? -- Darren Duncan

I don't think they do.  IMHO, Mapping should definitely be immutable
in both key and value; it is to Hash as Seq is to Array.  (Side note:
why is List considered to be immutable?  Doesn't it change whenever
its iterator is read?)

The question in my mind has to do with Pair: if Pair is being
redefined as mutable in value, should it have an immutable
counterpart?  If so, what should said counterpart be called?

-- 
Jonathan "Dataweaver" Lang


Re: r24819 - docs/Perl6/Spec

2009-01-08 Thread Darren Duncan

pugs-comm...@feather.perl6.nl wrote:

Log:
[S02] clarify that Pairs and Mappings are mutable in value, but not in key



 KeyHash Perl hash that autodeletes values matching default
 KeySet  KeyHash of Bool (does Set in list/array context)
 KeyBag  KeyHash of UInt (does Bag in list/array context)
+PairA single key-to-value association
+Mapping Set of Pairs with no duplicate keys



+As with C types, C and C are mutable in their
+values but not in their keys.  (A key can be a reference to a mutable
+object, but cannot change its C<.WHICH> identity.  In contrast,
+the value may be rebound to a different object, just as a hash
+element may.)


Following this change, it looks to me like Mapping is exactly the same as Hash. 
 So under what circumstances should one now choose whether they want to use a 
Hash or a Mapping?  How do they still differ? -- Darren Duncan