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