bearophile wrote:
Alternative names for the transitive const regime of D2, the main difference is 
that now immutable values are the default:

- "immutable" ==> (nothing, it's the default).
- "const" ==> "valview" (a local immutable value view of something).
- mutable variable ==> "var"
- "enum" ==> "const" (or maybe it can be removed, so it becomes immutable, that 
is no annotation. The link-time optimization of LDC is able to remove unused values from the binary. 
Ten years from now all D compilers can be able to do this).

[...]

I don't agree that immutable should be the the default. The default should be the most common case, which is mutable.

Regarding names; the fact that we currently have to write "enum x = 123;", which to me reads like "enumerate this single constant for me please, and BTW when I say 'enumerate' I really mean that I want to assign 123 to it", is one of the last remaining things in D that really bugs me.

I have suggested the following scheme at least twice:

    const: manifest constants, no storage (like const in D1, enum in D2)
 readonly: a read-only view of mutable data (like const in D2)
immutable: immutable data (like now)

(Both times Yigal Chiprun was the first to reply, saying he thinks there should only be const and non-const, and the rest is up to the compiler. I'd almost be disappointed if that doesn't happen now. :) I still disagree, though.)

-Lars

Reply via email to