Generic const - a non-functional view

Bill Baxter dnewsgroup at billbaxter.com
Thu Jun 26 14:07:46 PDT 2008


Dee Girl wrote:
> Bill Baxter Wrote:
> 
>> Dee Girl wrote:
>>> Steven Schveighoffer Wrote:
>>>
>>> You assign $y = $x. Two things could happen, a refcount is done or a full copy is done. You do not know. But you do not care! You care if changing one character in $x changes one character in $y. That never is happen. Which means semantically Perl strings are as good as strings of invariant characters. They never alias mutable data. This is the important thing. 
>> I certainly care if a 100MB string is getting duplicated.  It's most 
>> definitely going to change how I write the algorithm to manipulate that 
>> string.
> 
> Perl uses many strategy. Focus on copy or no copy is missing my point and Walter point.
> 
>> "Act like value type" and "are immutable" are two categories which have 
>> overlap, but they are not identical.  Walter keeps saying strings in 
>> perl are immutable, but Steven's test demonstrates that (at least for 
>> 100MB strings) they are not immutable, but they do act like value types.
>>
>> This difference is relevant since Walter has often argued that invariant 
>> strings are the way to go based on the "fact" that they have been such a 
>> success in languages like Perl.  And the implication is clear there (to 
>> me any way) that by 'invariant' he means invariant in the sense that D2 
>> strings are invariant.  If he wants to include Perl in his argument he 
>> should be saying "value type strings" rather than "invariant strings". 
>> Or he should just stick to using Java as his example.  :-)
> 
> I am sorry, again missing the point. Walter argument is very good. In Perl may get copy or just reference. In D always get a reference. You can create new copy. So even D has more control than Perl. In Perl you don't control when copy is.
> 
> Walter argument was that value-like types are better because no mutable aliasing. Mutable aliasing makes things difficult because for non local dependencies. This why scripting languages so easy to play with strings. D does that in a different way from Perl which is as powerful or even more. I think his point is perfect valid, even when terminology is imprecise this time. And I am happy he does not fall again in his C++ comparison trap where argument becomes childish ^_^. Thank you, Dee Girl
> 

I think we're all on the same page here.
My point is that Walter is using the wrong words to make his argument. 
He means "value type" but he has on several occasions stated that Perl 
strings are good because they are "invariant".

--bb



More information about the Digitalmars-d mailing list