Fully transitive const is not necessary

Jason House jason.james.house at gmail.com
Wed Apr 2 18:42:49 PDT 2008


Walter Bright wrote:

> Jason House wrote:
>> Walter Bright wrote:
>> 
>>> If you do away with transitive const, you cannot have invariant either.
>>> Const allows you to reuse code that works on invariants to work with
>>> mutables, too.
>>>
>>> Logical const just utterly breaks the whole system. Every scheme we've
>>> looked at for logical const winds up in some way breaking invariants. If
>>> invariants are broken, the advantages of them all just go away. I
>>> suspect that logical const is like perpetual motion - if you think
>>> you've solved it, you've just made a mistake somewhere <g>. I also
>>> suspect that the failure of logical const validates the D scheme of
>>> invariants as being correct - there shouldn't be any holes in it.
>>>
>>> You're right that invariant by itself is not enough to specify a pure
>>> function, a pure function also cannot read or write global state. But
>>> invariant is still a necessary condition, it's just not sufficient.
>> 
>> Is it possible to describe what tricks the compiler can do given:
>>  A. transitive const      w/ mutable access to globals/statics
>>  B. transitive invariance w/ mutable access to globals/statics
>>  C. transitive const      w/ const access to globals/statics
>>  D. transitive invariance w/ invariant access to globals/statics
>> 
>> It'd be extremely helpful to have that kind of discussion in the const
>> FAQ. Without it, I feel like we're all discussing theoretical stuff with
>> little basis for our arguments.
> 
> Sure, but static class members are *not* part of the transitive closure
> state of the object. They're just global variables.

That's why I lumped the two together :)

Does saying sure mean that we can look forward to seeing some info along
those lines?


>> PS: I went to digitalmars and couldn't find the const FAQ.  It's not
>> linked to from the normal FAQ and is not included in the left-side bar on
>> the D 2.0 page(s).
> 
> That'll happen with the next update.

Thanks.



More information about the Digitalmars-d mailing list