Stick a fork in it

Bill Baxter dnewsgroup at billbaxter.com
Wed May 9 18:02:04 PDT 2007


Chris Miller wrote:
> On Wed, 09 May 2007 14:56:14 -0400, Walter Bright 
> <newshound1 at digitalmars.com> wrote:
> 
>> I'm currently working on implementing const/invariant. It's becoming 
>> clear that this is a pervasive change, and will cause binary 
>> incompatibility with existing code. I'm trying to minimize any source 
>> incompatibilities.
>>
>> The first few iterations of const support probably will have lots of 
>> problems before it gets usable.
>>
>> This means that dmd will have to fork into a 1.x maintenance version 
>> and a 2.x beta.
> 
> 
> Well, hooray...
> 
> But I wonder about this const stuff. I remember a song similar to "here 
> a const, there a final, everywhere an invariant final" ;)


That't the observation that leads one to start thinking about making 
const the default in places where it makes sense.  Like on reference 
parameters to functions.  Rather than having to explicitly declare "hey 
I'm not going to modify this data" you only have to explicitly declare 
the "hey I AM going to modify this data" case.

I really don't know if it would end up being a net gain.  But it seems 
appealing.  The nice thing is that with C++ const arguments, if you 
write a function foo() that doesn't modify its arguments, but forget to 
mark the args as const, it's often some OTHER programmer who discovers 
that fact, because you might never try to call foo with a const param in 
your program.  But the poor other programmer who discovers it has to 
figure out whether to modify your code, or try to get you to fix it, or 
submit a patch or whatever, or const cast.

But with const default, if you forget to specify foo's arguments as 
mutable and you start trying to modify them in the function you're going 
to find out right away, when you're writing foo, not some time later 
when you try to call foo.

--bb



More information about the Digitalmars-d-announce mailing list