const by default.
Boris Wang
nano.kago at hotmail.com
Mon Jul 3 22:42:11 PDT 2006
"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.
More information about the Digitalmars-d
mailing list