const by default.

Derek Parnell derek at nomail.afraid.org
Mon Jul 3 22:48:37 PDT 2006


On Tue, 4 Jul 2006 13:42:11 +0800, Boris Wang wrote:

> "kris" <foo at bar.com> ??????:e8cu1q$nbc$1 at digitaldaemon.com...
>> Chad J wrote:
>>> So far I'm pretty convinced that some kind of "constness" is a good 
>>> thing.  I've already run into one area where this would be useful.
>>>
>>> I have one peeve about it though: I really would not like it if the 
>>> keyword used to represent constness was "const".  I will explain from my 
>>> newbie-to-Cplusplus background, having come from languages that seem, at 
>>> least to me, to be much more well thought out than Cplusplus.
>>>
>>> When I see "const" I think of it as a shorthand for "constant", just as 
>>> "bool" is shorthand for "boolean".  My understanding of something 
>>> constant is that it does not change... EVER.  Thus it makes no sense to 
>>> me why something as ephemeral as data passed into a function could be 
>>> considered constant.  If the constant data leaves the scope of the 
>>> function, becomes no longer constant, and gets changed, then it isn't 
>>> really constant to me.
>>>
>>> I do like the mutable word though, as it seems to have an english meaning 
>>> very close to its programming meaning  :)
>>> It also seems that if we were to make things immutable by default, we 
>>> could make an "immutable" keyword.  Sure it's kinda long, but since most 
>>> things are that by default then we won't be typing it much.  It also 
>>> seems so much more logically related to the word "mutable".
>>>
>>> Another worry I have is that of being stuck with many instances of 
>>> "mutable" littering my code, if only because said code happens to modify 
>>> referenced data a lot.  One way I might see this worry dissappearing if 
>>> there was a way to blanket stuff into being immutable, in order to avoid 
>>> repeating the word over and over again.  Sorta like:
>>>
>>> class Foo
>>> {
>>>   mutable:
>>>     int[] data; // this is mutable
>>>     char[] name; // this too
>>>     // etc
>>> }
>>>
>>> or maybe even something as radical as
>>>
>>> mutable
>>> {
>>>   // from now on everything works as it used to
>>>
>>>   void func1( char[] string1, char[] string2 )
>>>   {
>>>     string1[5] = 'a'; // ok
>>>     string2[3] = 'b'; // also good
>>>   }
>>>
>>>   void func2( int[] data )
>>>   {
>>>     data[8] = 42; // just dandy.
>>>   }
>>> }
>>>
>>> Note:  I am probably so newbish at language design compared to you guys 
>>> it is not even funny, so maybe the syntax suggestions suck, but please 
>>> consider my naming plea, at least as a "this experience was unpleasant so 
>>> please fix it" sorta thing.
>>
>>
>> hehe -- that would certainly resolve the problem for existing libraries: 
>> just wrap each entire module in a mutable{} block -- phobos would be done 
>> in 15 minutes :D
>>
>> Good idea!
>>
> 
> NO, Yet another colon / brace syntax.

Disregard Boris ;-)   It's a great idea. 

-- 
Derek
(skype: derek.j.parnell)
Melbourne, Australia
"Down with mediocrity!"
4/07/2006 3:48:13 PM



More information about the Digitalmars-d mailing list